Python中用OpenCV如何做霍夫圆变换
Admin 2022-09-19 群英技术资讯 492 次浏览
在这篇文章中我们来了解一下“Python中用OpenCV如何做霍夫圆变换”,一些朋友可能会遇到这方面的问题,对此在下文小编向大家来讲解一下,内容详细,易于理解,希望大家阅读完这篇能有收获哦,有需要的朋友就往下看吧!
circles = cv2.HoughCircles(img,
cv2.HOUGH_GRADIENT, 1, 20,
param1=50, param2=40, minRadius=25, maxRadius=0)
原始图 VS 检测圆效果图如下:
如下右图可以看到3个外侧圆绿色,圆心红色被成功检测到;
圆的最小半径设置由25调整为10,也可能会错误的检测到圆,效果图如下:
检测圆半径的阈值(param2设置35)的结果,最小圆半径设置10,也可能会错误的检测到圆,效果图如下:
# 霍夫圆检测 import cv2 import numpy as np cimg = cv2.imread('opencv_logo_350.jpg') cv2.imshow("origin", cimg) cv2.waitKey(0) img = cv2.cvtColor(cimg,cv2.COLOR_BGR2GRAY) img = cv2.medianBlur(img, 5) cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR) # - img: 待检测的灰度图 # - cv2.HOUGH_GRADIENT:检测的方法,霍夫梯度 # - 1:检测的圆与原始图像具有相同的大小,dp=2,检测的圆是原始图像的一半 # - 20:检测到的圆的中心的最小距离(如果参数为太小,除了一个真实的圆外,还可能会错误地检测到多个相邻圆。如果太大,可能会漏掉一些圆。) # - param1:在#HOUGHŠu梯度的情况下,它是较高的. 两个阈值传递到Canny边缘检测器(较低的一个小两倍)。 # - param2:在#HOUGHŠu梯度的情况下,它是检测阶段圆心的累加器阈值。它越小,就越可能检测到假圆; # - minRadius:最小圆半径,也可能会检测到假圆 # - maxRadius:最大圆半径,如果<=0,则使用最大图像尺寸。如果<0,则返回没有找到半径的中心。 circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20, param1=50, param2=40, minRadius=0, maxRadius=0) # 最小圆半径设置不合适,也可能会检测到假圆 # circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20, # param1=50, param2=40, minRadius=0, maxRadius=0) # circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20, # param1=50, param2=30, minRadius=10, maxRadius=0) circles = np.uint16(np.around(circles)) print(len(circles)) print(circles) for i in circles[0, :]: # 绘制外圈圆(蓝色) cv2.circle(cimg, (i[0], i[1]), i[2], (0, 255, 0), 2) # 绘制圆心(红色) cv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3) cv2.imshow('detected circles', cimg) cv2.waitKey(0) cv2.destroyAllWindows()
https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_houghcircles/py_houghcircles.html#hough-circles
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可
这篇文章主要介绍了关于numpy强制类型转换的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了pytorch交叉熵损失函数的weight参数的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
这篇文章主要介绍了python中的属性管理机制,主要包括私有属性和属性限制-__slots__方法,文中详细介绍了python中如何去声明变量的相关知识,需要的朋友可以参考下
pandas中的agg函数pandas详解 聚合运算agg()1. 创建DataFrame对象2. 单列聚合3. 多列聚合4. 多种聚合运算5. 多种聚合运算并更改列名6. 不同的列运用不同的聚合函数7.
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008