opencv - HoughLinesP 与 IplImage

标签 opencv hough-transform iplimage

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

invalid initialization of reference of type ‘cv::InputArray {aka const cv::_InputArray&}’ from expression of type ‘IplImage* {aka _IplImage*}’

/opt/ros/fuerte/include/opencv2/imgproc/imgproc.hpp:482:19: error: in passing argument 1 of ‘void cv::HoughLinesP(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 位,单 channel 二进制源图像。该功能可以修改图像。
我想,我对这里的指针处理感到困惑。
此外,如果我更改第一个参数:HoughLinesP(*imageD, lines, 1, CV_PI/180, PHTdThresh, PHTdmin, PHTdmax );比它编译但在运行时我在上面的行中得到核心欺骗:

OpenCV Error: Bad argument (Unknown array type) in cvarrToMat, file /tmp/buildd/ros-fuerte-opencv2-2.4.2-1precise-20130312-1308/modules/core/src/matrix.cpp, line 697 terminate called after throwing an instance of 'cv::Exception' what(): /tmp/buildd/ros-fuerte-opencv2-2.4.2-1precise-20130312-1308/modules/core/src/matrix.cpp:697: error: (-5) Unknown array type in function cvarrToMat

Aborted (core dumped)

最佳答案

OpenCV documentation

. You can assume that instead of InputArray/OutputArray you can always use Mat, std::vector<>, Matx<>, Vec<> or Scalar



您不能将 IplImage 作为 InputArray 传递。您可以使用 Mat(const IplImage* img, bool copyData=false); 解决此问题。构造函数。您调用HoughLinesP()应该:
    HoughLinesP(Mat(imageD), lines, 1, CV_PI/180, PHTdThresh, PHTdmin, PHTdmax );

关于opencv - HoughLinesP 与 IplImage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20075245/

相关文章:

c# - opencv_imgproc.dll 抛出 BadImageFormatException

c++ - OpenCV - C++ 中 Mat 对象的平均值

python-3.x - 过滤感兴趣区域的掩码(OpenCV)

opencv - 线段检测器与概率霍夫变换

opencv - 检测图像中的标记以用于OpenCV中的透视变换

c++ - 将 IplImage * 传递给函数,原始文件没有得到更新

python - 获取重复轮廓

c - 使用霍夫变换找直线,还需要跟踪在这些直线上找到的点

c++ - IplImage 上的半透明对象

c++ - 如何快速将 IplImage(OpenCV) 转换为 ALLEGRO_BITMAP (A5)?