我正在尝试对图像应用概率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中的未知数组类型
中止(核心倾销)
答案 0 :(得分:2)
。您可以假设您可以使用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 );