另外一个字母会导致imread中的访问冲突

时间:2013-01-12 04:16:39

标签: c++ opencv visual-c++-2008

出于某种原因,此代码在第二个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;
}

确切的运行时错误消息是:“MLMVNroThrust.exe中0x61f437ef(msvcr100d.dll)处的未处理异常:0xC0000005:访问冲突读取位置0xcccccccc。”具有相同可见项目设置的相同代码在另一台PC上可以接受。图像是相同的副本。

我正在使用OpenCV 2.4.3预建的二进制文件;这些项目也被设置为使用CUDA,但我已经删除了所有CUDA代码以解决问题。

是什么导致此违规访问以及如何摆脱它?

感谢。

1 个答案:

答案 0 :(得分:0)

Per this post on the OpenCV forums,当使用Visual C ++ 2008且2010年的OpenCV路径(OPENCV_AV设置为“%OPENCV_ROOT%\ x86 \ vc10”)时会发生这种情况。

我已经在我的实验室PC上更正了这个问题(OPENCV_AV现在设置为“%OPENCV_ROOT%\ x86 \ vc9”),这是用Visual C ++ 2010设置的,供以前的研究人员使用。

感谢所有回复的人!