我正在尝试对图像执行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);
答案 0 :(得分:0)
您混合使用C和C ++语法。选择其中一个,并使用正确的文档。
这里你用C风格(IplImage)声明了矩阵,并且称为cv :: Sobel(),而不是cvSobel()。