Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.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++ 大型图像的OpenCV CvSeq递归元素访问失败?_C++_Recursion_Opencv - Fatal编程技术网

C++ 大型图像的OpenCV CvSeq递归元素访问失败?

C++ 大型图像的OpenCV CvSeq递归元素访问失败?,c++,recursion,opencv,C++,Recursion,Opencv,我的开发环境是Windows7上的Mingw32位CMake。(同样的代码在Linux上也可以正常工作) 我使用cvFindContours()使用OpenCV检测轮廓 我使用递归方法跟踪生成的CvSeq,以按级别访问等高线,如下所示: void helperParseCurves(CvSeq* contour, int level) { //Travel same level contours if(contour->h_next != NULL) {

我的开发环境是Windows7上的Mingw32位CMake。(同样的代码在Linux上也可以正常工作)

我使用cvFindContours()使用OpenCV检测轮廓

我使用递归方法跟踪生成的CvSeq,以按级别访问等高线,如下所示:

void helperParseCurves(CvSeq* contour, int level) {


    //Travel same level contours
    if(contour->h_next != NULL) {
        helperParseCurves(contour->h_next, level);
    }
    if(contour->v_next != NULL) {
        helperParseCurves(contour->v_next, level+1);
    }
    //Travel child levels
    for(int i=0; i<contour->total; i++){

        //Try to access Point data -- Crash here when threshold level 114 ?
        //Works when uncommented
        CvPoint* p = CV_GET_SEQ_ELEM(CvPoint, contour, i);

    }
}
void helperParseCurves(CvSeq*轮廓,内部级别){
//等高线
如果(轮廓->h_下一步!=NULL){
helperParseCurves(轮廓->h_next,level);
}
如果(轮廓->v_下一步!=NULL){
helperParseCurves(轮廓->v_下一步,级别+1);
}
//旅行儿童级别
for(int i=0;itotal;i++){
//尝试访问点数据--当阈值级别为114时在此崩溃?
//未注释时有效
CvPoint*p=CV_GET_SEQ_ELEM(CvPoint,轮廓,i);
}
}
但是应用程序在以下行崩溃:CvPoint*p=CV_GET_SEQ_ELEM(CvPoint,contour,i) 这种情况发生在某些特定的大型图像上,在Linux中可以正常工作

我已经上传了一个示例程序,在

*使用CMake下载并编译

*使用示例图像运行代码- “OCvTest.exe测试img.tif”

*将滑块值更改为114左右,应用程序将崩溃

*如果行#27被注释,则可以正常工作

有什么建议吗

这可能是OpenCV错误吗


提前感谢。

我意识到这是由于递归函数造成的。一旦我把它变成一个迭代函数,一切都很好。 现在我知道了为什么递归函数不好了…以前我并没有真正“实际”理解这一点