0

何らかの理由で、このコードは 2 回目の imread でアクセス違反を生成しますが、最初の imread では生成しません。

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
using namespace cv;

int main(int argc, char **argv)
{
    Mat mat1, mat2;

    char imgname1[255]="cise_StackD.tif";
    mat1 = imread( imgname1, CV_LOAD_IMAGE_GRAYSCALE); 

    char imgname2[255]="ecise_StackD.tif";
    mat2 = imread( imgname2, CV_LOAD_IMAGE_GRAYSCALE); 

    return 0;
}

正確なランタイム エラー メッセージは次のとおりです。同一の可視プロジェクト設定を持つ同一のコードは、別の PC でも問題なく実行されます。画像は同一のコピーです。

OpenCV 2.4.3 ビルド済みバイナリを使用しています。プロジェクトは CUDA も使用するように設定されていますが、問題を特定するためにすべての CUDA コードを削除しました。

このアクセス違反の原因と、それを取り除くにはどうすればよいですか?

ありがとう。

4

1 に答える 1

0

OpenCV フォーラムのこの投稿によると、これは Visual C++ 2008 を 2010 用の OpenCV パス (OPENCV_AV が "%OPENCV_ROOT%\x86\vc10" に設定されている) で使用している場合に発生します。

以前の研究者が使用するために Visual C++ 2010 でセットアップされたラボ PC (OPENCV_AV は現在 "%OPENCV_ROOT%\x86\vc9" に設定されています) でこの問題を修正しました。

回答してくれたすべての人に感謝します!

于 2013-01-13T00:29:50.190 に答える