尝试在Linux中编译基于OpenCV-0.9.5的旧代码。它成功构建,但运行时出现了cv错误:
" OpenCV错误:断言失败(CV_IS_IMAGE(arr)&&(coi = cvGetImageCOI((const IplImage *)arr)-1)> = 0)未知功能,文件.... .... \ OCV \的OpenCV \ SRC \ CXCORE \ cxmatrix.cpp"
我不擅长OpenCV,也不了解这段代码到底做了什么。我只想编译并运行项目:https://github.com/thirtysixthspan/cvEyeTracker
该项目有很多代码,我不能在这里编写所有代码,但是我在这样的另一个项目中编写并测试了容易出错的代码:
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时仍会产生相同的错误。问题是什么?我该如何解决这个问题?
注意:我正在使用OpenCV 2.4.1和Visual Studio 2013 with C ++。
答案 0 :(得分:0)
我用以下代码替换了代码:
vector<Point> contour;
vector<vector<Point>> storage;
findContours(threshold_image, storage, contour, CV_RETR_LIST, CV_CHAIN_APPROX_NONE, Point(0, 0));
所有代码都转换为OpenCV 3.1并且项目已成功构建,但问题仍然存在,正如我在问题中声明的那样。在这里编写所有代码是不合理的,因此我可以将整个Visual Studio 2013项目发送给想要调试的人。
谢谢
答案 1 :(得分:0)
最后我发现问题是它是位置的输入参数:
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);
输出为Max = 255,Min = 0.为什么这些min_loc和max_loc会导致此问题?