使用Python测试霍夫圆检测

目录

1. 目的

2. 霍夫园检测的原理

3. 使用opencv测试


1. 目的

 记录使用python学写霍夫圆检测的过程

2. 霍夫园检测的原理

略!别怪我,这个涉及到数学原理。有时间我再进行补充,我们先会用。(绝对不是我不懂哦。嘻嘻嘻)

3. 使用opencv测试

先用一张很标准的图来测试下,我直接在ptp上画的一张图:

import cv2 as cv
import numpy as np
 
#读取文件
origin = cv.imread('images/origin3.png', 1)
img = cv.imread('images/origin3.png', 0)

#霍夫圆检测
circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 100, param1=50, param2=30, minRadius=0, maxRadius=100)
 
circles = np.uint16(np.around(circles))
 
#将检测到的圆圈标上去
for i in circles[0, :]:  # 遍历矩阵每一行的数据
    cv.circle(origin, (i[0], i[1]), i[2], (0, 255, 0), 2)
    cv.circle(origin, (i[0], i[1]), 2, (0, 0, 255), 3)
 
#显示图像
cv.imshow("image", origin)
cv.waitKey(0)
cv.destroyAllWindows()

识别效果很完美:

在用一张随意点的图:

调节了下param1和param2以及半径的参数:

import cv2 as cv
import numpy as np
 
#读取文件
origin = cv.imread('images/origin1.png', 1)
img = cv.imread('images/origin1.png', 0)

# cv.imshow("image", origin)
# cv.waitKey(0)

#霍夫圆检测
circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 13, param1=50, param2=18, minRadius=0, maxRadius=20)
 
circles = np.uint16(np.around(circles))
 
#将检测到的圆圈标上去
for i in circles[0, :]:  # 遍历矩阵每一行的数据
    cv.circle(origin, (i[0], i[1]), i[2], (0, 255, 0), 2)
    cv.circle(origin, (i[0], i[1]), 2, (0, 0, 255), 3)
 
#显示图像
cv.imshow("image", origin)
cv.waitKey(0)
cv.destroyAllWindows()

多识别出了两个点,这两个点的半径比较小,那就很好处理了。直接设定minRadio进行控制

 circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 13, param1=50, param2=18, minRadius=15, maxRadius=20)

最后结果:(检测效果还是很好的)

 感谢大家查阅,有任何问题都可以在评论去评论哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值