我正在尝试在图像上应用概率霍夫变换,但出现此编译器错误:

    IplImage *imageD, *src; //src -is read from a *.png and preprocessed
    ...
    imgageO=imageD = cvCreateImage( cvSize(src->width,src->height), 8, 1 );
    cvCopy(src, imageO);
    ...
    HoughLinesP(imageD, lines, 1, CV_PI/180, PHTdThresh, PHTdmin, PHTdmax );
HLP()的第一个参数是InputArray图像:– 8位单通道二进制源图像。该图像可以通过该功能进行修改。
我认为,我对这里的指针处理感到困惑。
此外,如果我更改第一个参数:HoughLinesP(*imageD, lines, 1, CV_PI/180, PHTdThresh, PHTdmin, PHTdmax );比它可以编译,但是在运行时我得到了上面这行的核心欺骗:

最佳答案

OpenCV documentation



您不能将IplImage作为InputArray传递。您可以使用Mat(const IplImage* img, bool copyData=false);构造函数来解决此问题。您对HoughLinesP()的调用应为:

    HoughLinesP(Mat(imageD), lines, 1, CV_PI/180, PHTdThresh, PHTdmin, PHTdmax );

10-06 04:56