Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将cvMinMaxLoc与IplImage一起使用时出错_C++_Opencv - Fatal编程技术网

C++ 将cvMinMaxLoc与IplImage一起使用时出错

C++ 将cvMinMaxLoc与IplImage一起使用时出错,c++,opencv,C++,Opencv,在Linux中尝试编译基于OpenCV-0.9.5的旧代码时。它成功构建,但在运行时出现cv错误: “OpenCV错误:在未知函数、文件……。\ocv\OpenCV\src\cxcore\cxmatrix.cpp中断言失败(CV_IS_IMAGE(arr)&&(coi=cvGetImageCOI((const-IplImage*)arr)-1)>=0)” 我不擅长OpenCV,也不理解这段代码的真正作用。我只想在以下位置编译和运行项目: 该项目有很多代码,我无法在这里全部编写,但我在另一个项目中

在Linux中尝试编译基于OpenCV-0.9.5的旧代码时。它成功构建,但在运行时出现cv错误:

“OpenCV错误:在未知函数、文件……。\ocv\OpenCV\src\cxcore\cxmatrix.cpp中断言失败(CV_IS_IMAGE(arr)&&(coi=cvGetImageCOI((const-IplImage*)arr)-1)>=0)”

我不擅长OpenCV,也不理解这段代码的真正作用。我只想在以下位置编译和运行项目:

该项目有很多代码,我无法在这里全部编写,但我在另一个项目中编写并测试了容易出错的代码,如下所示:

IplImage *eye_image; 

char *in_file = "E:\\eye.png";

eye_image = cvLoadImage(in_file, 1);

double min_value, max_value;

CvPoint min_loc, max_loc;

cvMinMaxLoc(eye_image, &min_value, &max_value, &min_loc, &max_loc);
调用cvMinMaxLoc时仍会产生相同的错误。有什么问题?我怎样才能解决这个问题


注释:我使用OpenCV2.4.1和Visual Studio 2013用C++来实现.< /P> < P> @ Miki,我迁移到OpenCV 3.1,但是问题是转换这些行:

CvSeq* contour=NULL;

CvMemStorage* storage = cvCreateMemStorage(0);

cvFindContours(threshold_image, storage, &contour, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
OpenCV 3.1包含具有不同类型参数的FindOnTours方法:

此外,代码继续使用轮廓变量作为:

等高线->总计


您知道CvSeq和CvMemStorage的正确等效性是什么吗

我用以下代码替换代码:

vector<Point> contour;

vector<vector<Point>> storage;

findContours(threshold_image, storage, contour, CV_RETR_LIST, CV_CHAIN_APPROX_NONE, Point(0, 0));
矢量轮廓;
矢量存储;
findContours(阈值图像、存储、轮廓、CV_RETR_列表、CV_链约无、点(0,0));
所有代码都转换为OpenCV 3.1,项目成功构建,但问题仍然存在,正如我在问题中声明的那样。在这里编写所有代码是不合理的,因此我可以将整个Visual Studio 2013项目发送给想要调试的人


谢谢

最后我发现问题在于位置的输入参数:

Mat eye_image; 

eye_image = imread("E:\\eye.png");

double min_value, max_value;

//CvPoint min_loc, max_loc;

minMaxLoc(eye_image, &min_value, &max_value);//, &min_loc, &max_loc);

输出最大值为255,最小值为0。为什么这些最小位置和最大位置会导致此问题

不要使用C过时的api!谢谢我尝试使用OpenCV 2.4.1将所有代码转换成C++,但不能成功。最新的是3.1