0

出于某种原因,此代码在第二次读取时产生访问冲突,但不是第一次。

#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 代码以隔离问题。

是什么造成了这种访问冲突,我该如何摆脱它?

谢谢。

4

1 回答 1

0

根据OpenCV 论坛上的这篇文章,当使用 Visual C++ 2008 和用于 2010 的 OpenCV 路径时会发生这种情况(OPENCV_AV 设置为“%OPENCV_ROOT%\x86\vc10”)。

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

感谢所有回复的人!

于 2013-01-13T00:29:50.190 回答