简述
基于python使用opencv实现在一张图片中检测出圆形,并且根据坐标和半径标记出圆。不涉及理论,只讲应用。

霍夫变换检测圆形的原理
其实检测圆形和检测直线的原理差别不大,只不过直线是在二维空间,因为y=kx+b,只有k和b两个自由度。而圆形的一般性方程表示为(x-a)²+(y-b)²=r²。那么就有三个自由度圆心坐标a,b,和半径r。这就意味着需要更多的计算量,而OpenCV中提供的cvHoughCircle()函数里面可以设定半径r的取值范围,相当于有一个先验设定,在每一个r来说,在二维空间内寻找a和b就可以了,能够减少计算量。
相关函数
函数说明:
Python: cv2.HoughCircles(image, method, dp, minDist[, circles[, param1[, param2[, minRadius[, maxRadius]]]]]) → circles
参数说明:
- image- 8位,单通道,灰度输入图像。
- circles- 找到的圆的输出向量。每个向量被编码为3元素的浮点向量 (x,y,半径)。
- circle_storage - 在C函数中,这是一个将包含找到的圆的输出序列的内存存储。
- method- 使用检测方法。目前,唯一实现的方法是 CV_HOUGH_GRADIENT,基本上是 21HT,在[Yuen90]中有描述 。
- dp - 累加器分辨率与图像分辨率的反比。例如,如果 dp = 1,则累加器具有与输入图像相同的分辨率。如果 dp = 2,则累加器的宽度和高度都是一半。
- minDist -检测到的圆的中心之间的最小距离。如果参数太小,除了真正的参数外,可能会错误地检测到多个邻居圈。如果太大,可能会错过一些圈子。
- param1 - 第一个方法特定的参数。在CV_HOUGH_GRADIENT的情况下, 两个传递给Canny()边缘检测器的阈值较高(较小的两个小于两倍)。
- param2 - 第二种方法参数。在CV_HOUGH_GRADIENT的情况下,它是检测阶段的圆心的累加器阈值。越小,可能会检测到越多的虚假圈子。首先返回对应于较大累加器值的圈子。
- minRadius -最小圆半径。
- maxRadius - 最大圆半径。
这是根据opencv官方文档谷歌翻译过来的,参数比较多,但用的时候只修改一些主要的,传入的图像和最大最小圆半径,以达到检测出想要的圆的效果。
还有要注意函数的返回值
找到的圆的输出向量。每个向量被编码为3元素的浮点向量 (x,y,半径)。
这句话不是很好理解,我们直接输出返回值就会发现是个 三层嵌套list,最内层list有三个元素,分别是圆心的行,列,半径,这表示一个圆的基本信息。多个圆基本信息组成了一个新的list,这个list包含了检测到的所有圆,即长度就是检测到圆的个数。最外层再加了个list,至于干啥的不清楚了,不影响使用就好。
下图是输出函数返回值的一个实例图
实例演示
完整代码
import cv2
#载入并显示图片
img=cv2.imread('circle.png')
cv2.imshow('img',img)
#灰度化
gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
#输出图像大小,方便根据图像大小调节minRadius和maxRadius
print(img.shape)
#霍夫变换圆检测
circles= cv2.HoughCircles(gray,cv2.HOUGH_GRADIENT,1,100,param1=100,param2=30,minRadius=5,maxRadius=300)
#输出返回值,方便查看类型
print(circles)
#输出检测到圆的个数
print(len(circles[0]))
print('-------------我是条分割线-----------------')
#根据检测到圆的信息,画出每一个圆
for circle in circles[0]:
#圆的基本信息
print(circle[2])
#坐标行列
x=int(circle[0])
y=int(circle[1])
#半径
r=int(circle[2])
#在原图用指定颜色标记出圆的位置
img=cv2.circle(img,(x,y),r,(0,0,255),-1)
#显示新图像
cv2.imshow('res',img)
#按任意键退出
cv2.waitKey(0)
cv2.destroyAllWindows()
运行结果
shell输出截图
总结
相关推荐:
SEO优化基础:让你的网站脱颖而出的秘密武器,模仿猫ai
SEO网:让你的数字营销更加精准高效,开启网络引流新时代,丰县互联网网站推广优势
ChapGPT免费爬墙,轻松访问全球互联网资源!,蜜桃ai插画
ChatGPT为什么访问不了了?了解背后的原因与解决方法,AI怎么拖入路径
ChatGPT出问题?背后的原因与解决方案,夸克ai写作生成
SEO地址优化的秘诀:提升网站排名与流量的关键,临沂如何优化网站关键词
SEO每日:提高网站流量的秘密武器,助你脱颖而出,seo优化和排名技巧
seo站内关键词优化,seo关键词优化经验技巧 ,ai 优点
SEO合同:确保您网站优化成功的关键保障,微博营销推广规则最新
SEO优化如何提升网站排名,驾驭搜索引擎流量,三亚网站推广方法
“关键词指白”:揭秘如何通过精准关键词优化实现流量暴增,全面分析网站seo
如何利用AI生成高质量文章,提升写作效率与创意?
SEO要素:优化网站排名的关键因素全解析,棒球大联盟营销推广文案
从“官网扒下来”看企业数字化转型的未来,摄影营销策略推广文案
ChatGPT您的应用遇到问题,无法正常启动?如何解决并重新体验智能助手的魅力!,男头ai关键词
ChatGPT无法加载?检查您的网络设置并尝试重启ChatGPT,解决您的使用困扰!,ai光晕制作
SEO可以帮助网站在搜索引擎中获得较高的排名-助力企业数字化转型的关键,赵立新AI换脸图片对比
SEO动态:2025年SEO趋势与优化技巧解析,十堰外贸网站推广费用
SEO但是,这些常见误区你真的知道吗?,凤岗网站建设开发
SEO怎么优化比较好?全面提升网站排名的实用技巧,高级ai玩家
为什么“360收录”是你网站推广的必备利器,seo亚马逊
内容创作新时代:自动生成文章的AI如何改变写作生态
seo需要什么人员,seo需要什么技能 ,画大学ai
seo需要干什么,seo需要具备什么知识 ,ai梦境档案世岛大宅
seo监控什么意思,seo数据监控 ,ai panda眼镜架
SEO与SEM:谁才是提升网站流量的王者?,Ai中字体如何变形立体
ChatGPT可以实现新闻报道的即时自动化生成,怎么更改ai2的图标
ChatGPT服务器坏了?了解背后的技术与应对策略,AI模块代表
SEO这种营销方式,改变你网站流量的秘密武器,佛山网站设计建设
为什么关键词太少会影响你的网络营销效果?,陕西seo网站推广工具
AI免费免登录:轻松体验人工智能的魔力,无需繁琐注册,华为AI音箱2音质如何
ChatGPTApp怎么调大字体?提升阅读体验,让文字更清晰,推荐ai音频
ChatGPT宕机两小时,OpenAI紧急修复,用户期待AI恢复正常服务,oppo小布ai
互联网资源的无限潜力:如何利用数字世界为个人和企业创造价值,信阳网站建设正规公司
AI网页生成:轻松构建智能网站,提升品牌竞争力,杭州专业ai智能教育
SEO中权重是什么意思?让你迅速网站排名的核心秘密!,长颈鹿智能AI点读机
如何选择适合你的AI工具?全面解析AI工具哪个好用
AI生成网页模板,轻松打造专业网站,ai网格画法
企业关键字-助力企业成功的隐形动力,闽侯县企业网站建设
SEO可以改变你的商业未来:如何通过优化提升网站流量和转化率,五粮液营销推广
AI免费试用不需要登录:体验智能科技的魅力,轻松开启未来,华为ai身材
SEO兼职:如何通过SEO兼职实现收入增长与职业突破,濮阳网站建设官网
OpenPose大白话解释:让你轻松理解姿态识别的神奇技术,ai天天晴
SEO发明:引领数字时代营销革命的力量,速卖通外贸推广网站
ZBlog:开启你的个人网站新时代,轻松搭建与管理,二手手机营销推广方案
SEO学费多少钱?揭秘SEO培训的投资价值与回报!,郴州网站推广多少钱一个
主题导航-引领互联网世界的智慧之路,大渡口网站建设方案
seo追词是什么,seo词条 ,52580609AI
什么是seo运营,什么是seo营销 ,ai绘画沙地
文章AI扩写:突破创作瓶颈,提升写作效率的秘密武器