www.fltk.net > 使用opEnCv,用CAnny做图像边缘识别,得到边缘后怎...

使用opEnCv,用CAnny做图像边缘识别,得到边缘后怎...

用opencv自带的canny检测后(详见一楼的回答)应该已经得到包含边缘 的二值图像(设其图像头为 pEdge)可将其数据pEdge->ImageData 调出, 查找非0元素 即可得 (另外有一个cvCountNonZero的函数可以统计非零元素个数)

img=cvLoadImage(argv[1]); IplImage* gray=cvcreateImage(cvgetsize(img),8,1); IplImage* edge=cvcreateImage(cvgetsize(img),8,1); cvCvtColor(img,gray,CV_BGR2Gray); cvCanny(gray,edge,60,255,3); 得到的Edge就是图像的边缘,在函数cvCann...

canny边缘检测后,就是可以的得到一个细线化的图像,还想要怎么分割呢?问题不清楚。

用opencv自带的canny检测后(详见一楼的回答)应该已经得到包含边缘 的二值图像(设其图像头为 pEdge)可将其数据pEdge->ImageData 调出, 查找非0元素 即可得 (另外有一个cvCountNonZero的函数可以统计非零元素个数)

canny算法是提取边缘的,这个阈值就是告诉算法“什么程度的边界才算边缘”,阈值越大表示标准越严厉,提取到的边缘越少,你可以跑跑程序,观察不同阈值对图像处理的结果,就知道了

用opencv自带的canny检测后(详见一楼的回答)应该已经得到包含边缘 的二值图像(设其图像头为 pEdge)可将其数据pEdge->ImageData 调出, 查找非0元素 即可得 (另外有一个cvCountNonZero的函数可以统计非零元素个数)

opencv不太熟,我的想法是: 先用canny算子进行边缘检测,得到这两条线; 然后求各点梯度,把水平方向梯度为零的点删除。剩下斜线; 然后找出两斜线顶点,两点横纵坐标差就是你要的! 或者,找一个角点检测的算法,可能快些!

在opencv中显示边缘检测很简单,只需调用一个cvCanny函数,其使用的是Canny算法来实现对图像的边缘检测. 函数原型为: void cvCanny( const CvArr* image,CvArr* edges,double threshold1,double threshold2, int aperture_size=3 ); 第一个参...

楼主,请问你解决问题了吗?我也有相同的问题

采用 Canny 算法做边缘检测void cvCanny( const CvArr* image, CvArr* edges, double threshold1,double threshold2, int aperture_size=3 );--image 输入图像.--edges 输出的边缘图像--threshold1 第一个阈值--threshold2 第二个阈值--aperture...

网站地图

All rights reserved Powered by www.fltk.net

copyright ©right 2010-2021。
www.fltk.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com