介绍
这篇文章主要介绍怎么使用opencv3/c++实现霍夫圆/直线检测,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
<强>霍夫直线检测强>
参数说明:
简历::HoughLinesP ( InputArray src,,//,输入图像(8位灰度图像) OutputArray ,,//,输出直线两点坐标(vector示例:
# include# include using namespace 简历; int main () { Mat 才能,src, dst; src 才能=,imread (“E:/图片/图片/line.jpg"); 如果才能(src.empty ()) {才能 ,,,printf(“还要not load image \ n"); ,,,return 1; ,,} cvNamedWindow才能(“input",, CV_WINDOW_AUTOSIZE); imshow才能(“input",, src); dst 才能=,垫::0 (src.size (),, src.type ());,, cvtColor才能(dst src CV_RGB2GRAY); 精明的才能(dst, dst, 0200); vector<才能;Vec4i>,多义线; HoughLinesP才能(dst,多段线,,1,,CV_PI/180,, 150,,,, 10); 的才能(size_t 小姐:=0;,i<, plines.size();,我+ +) {才能 ,,,Vec4i points =,多义线[我]; ,,,行(src,,点(点[0],点[1]),,点(点[2],[3]),,标量(0255255),,3,,CV_AA); ,,},,,, cvNamedWindow才能(“output",, CV_WINDOW_AUTOSIZE); imshow才能(“output",, src); waitKey才能(); return 才能;0; }
<强>霍夫圆检测强>
霍夫圆检测对噪声比较敏感,一般要先对图像做中值滤波。
参数说明:
HoughCircles ( InputArray 形象,,//,输入图像,,必须是8位的单通道灰度图像 OutputArray ,,//,输出结果,即圆信息(圆心+半径) Int 方法,,//,采用方法:HOUGH_GRADIENT Double , dp,//, dp =, 1,, Double mindist,,//, 10,最短距离,可以分辨是两个圆的,否则认为是同心圆:src_gray.rows/8 Double param1,,//,用于精明的边缘阀值上限,下限被置为上限的一半 Double param2,,//,中心点累加器阈值 Int minradius,,//,最小半径 Int maxradius//最大半径, )示例:
# include# include using namespace 简历; int main () { Mat 才能,src, dst; src 才能=,imread (“E:/图片/图片/line.jpg"); 如果才能(src.empty ()) {才能 ,,,printf(“还要not load image \ n"); ,,,return 1; ,,} cvNamedWindow才能(“input",, CV_WINDOW_AUTOSIZE); imshow才能(“input",, src); cvtColor才能(src src CV_RGB2GRAY); 时间=dst 才能;src.clone (); cvtColor才能(dst, dst CV_GRAY2RGB); ,,//中值滤波 medianBlur才能(src src 3); vector<才能;Vec3f>,圈; HoughCircles才能(src、圆CV_HOUGH_GRADIENT 1100, 45岁,30岁,45220); ,,(size_t 小姐:=,0;,小姐:& lt;, circles.size();,我+ +) {才能 ,,,Vec3f c =,圈[我]; ,,,圆(dst,,点(c [0], c [1]),, c[2],标量(0255255),,3,,CV_AA); ,,} cvNamedWindow才能(“output",, CV_WINDOW_AUTOSIZE); imshow才能(“output",, dst); waitKey才能(); return 才能;0; }
以上是“怎么使用opencv3/c++实现霍夫圆/直线检测”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!
怎么使用opencv3/c++实现霍夫圆/直线检测