Opencv 2.1 Sobel检测器通过错误
Posted
技术标签:
【中文标题】Opencv 2.1 Sobel检测器通过错误【英文标题】:Opencv 2.1 Sobel detector passing error 【发布时间】:2011-11-12 15:42:18 【问题描述】:我正在尝试对图像执行 Sobel 变换,但它给出了以下错误:
错误:从“IplImage*”类型的表达式中对“cv::Mat&”类型的引用无效初始化| 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】:您混合使用 C 和 C++ 语法。选择其中之一,并使用正确的文档。
在这里,您以 C 风格 (IplImage) 声明了矩阵,并调用了 cv::Sobel(),而不是 cvSobel()。
【讨论】:
以上是关于Opencv 2.1 Sobel检测器通过错误的主要内容,如果未能解决你的问题,请参考以下文章
opencv入门之九Opencv边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器
Python+opencv利用sobel进行边缘检测(细节讲解)
Opencv图像边缘检测——Roberts算子(手写)Sobel算子(手写和调包)Scharr算子Laplacian算子