【问题标题】:HoughLinesP with IplImageHoughLinesP 与 IplImage
【发布时间】:2013-12-03 05:22:37
【问题描述】:

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

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

/opt/ros/fuerte/include/opencv2/imgproc/imgproc.hpp:482:19: 错误:在传递'void cv::HoughLinesP(cv::InputArray, cv::OutputArray, 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::异常'什么(): /tmp/buildd/ros-fuerte-opencv2-2.4.2-1precise-20130312-1308/modules/core/src/matrix.cpp:697:错误:(-5)函数cvarrToMat中的未知数组类型

中止(核心转储)

【问题讨论】:

    标签: opencv hough-transform iplimage


    【解决方案1】:

    OpenCV documentation

    。您可以假设您始终可以使用 Mat、std::vector、Matx、Vec 或 Scalar

    来代替 InputArray/OutputArray

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-20
      • 2016-09-25
      • 2016-06-07
      • 2021-08-04
      • 2012-06-24
      • 2011-09-02
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多