HoughLinesP with IplImage



我试图在图像上应用概率霍夫变换,但我得到了以下编译器错误:

从类型为"IplImage*{aka_IplImage*}"的表达式初始化类型为"cv::InputArray{aka const cv::_InputArray&}"的引用无效

/opt/ros/fuerte/include/opencv2/imgproc/imgproc.hp:482:19:错误:在传递"void cv::HoughLinesP(cv::InputArray,cv::OutputArray,double,double、int、double、double)"的参数1时

    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错误:cvarrToMat文件中的参数错误(未知数组类型)/tmp/buildd/ros-fuerte-opencv2-2.4.2-1precise-20130312-1308/modules/core/src/matrix.cpp,第697行在抛出的实例后终止调用'cv::Exception'what():/tmp/buildd/ros-fuerte-opencv2-2.4.2-1precise-20130312-1308/modules/core/srcmatrix.cpp:697:错误:(-5)函数cvarrToMat 中的未知数组类型

中止(堆芯转储)

OpenCV文档中说

您可以假设您可以始终使用Mat、std::vector<>来代替InputArray/OutputArray,Matx<>,Vec<>或标量

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

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

相关内容

  • 没有找到相关文章

最新更新