HoughLinesP与IplImage

时间:2013-11-19 15:16:27

标签: opencv hough-transform iplimage

我正在尝试对图像应用概率Hough变换,但是我得到了这个编译错误:

  

从'IplImage * {aka _IplImage *}'类型的表达式初始化'cv :: InputArray {aka const cv :: _ InputArray&}'类型的引用无效

     

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

    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/src/matrix.cpp:697:错误:( - 5)函数cvarrToMat中的未知数组类型

     

中止(核心倾销)

1 个答案:

答案 0 :(得分:2)

OpenCV documentation

  

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

您无法将IplImage作为InputArray传递。您可以使用Mat(const IplImage* img, bool copyData=false);构造函数解决问题。您拨打HoughLinesP()的电话应为:

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