Opencv 2.1 Sobel探测器传递错误

时间:2011-11-12 15:42:18

标签: opencv

我正在尝试对图像执行Sobel变换,但它会出现此错误:

  

错误:'cv :: Mat&'类型引用的初始化无效来自'IplImage *'类型的表达式   cv.hpp | 254 |错误:传递'void cv :: Sobel(const cv :: Mat&,cv :: Mat&,int,int,int,int,double,double,int)'的参数2   || ===构建完成:2个错误,0个警告=== |

我是否误解了手册所说的内容? 我正在使用opencv v2.1文档

 IplImage* img=cvLoadImage("fight1.png");

           CvMat *mat = cvCreateMat(img->height,img->width,CV_32FC3 );
           //Get width and height
           int w=img->width;
           int h=img->height;
           //create Images
           IplImage* img2=cvCreateImage( cvSize( w, h ), IPL_DEPTH_8U, 1 );
           IplImage* img3=cvCreateImage( cvSize( w, h ), IPL_DEPTH_8U, 1 );
           //convert to Mat
           cvConvert(img,mat);

           //prepare stream reader
           ofstream ob;
           ob.open("object.txt");

            //Perform Sobel
           cvCvtColor( img,img2,CV_RGB2GRAY);
           Sobel(img2,img3,32 ,1,3,1.0,1.0,BORDER_DEFAULT);
            //cvLaplace( img, img2);

1 个答案:

答案 0 :(得分:0)

您混合使用C和C ++语法。选择其中一个,并使用正确的文档。

这里你用C风格(IplImage)声明了矩阵,并且称为cv :: Sobel(),而不是cvSobel()。