python-opencv[图像处理-霍夫圆检测]

霍夫圆检测(HoughCircles)

霍夫圆检测是先进行圆心的确定,然后根据圆心推导出半径。
1。圆心检测的原理:圆心是无数条直线相交的结果,那么可以设定一个阈值,如果相交于一点的直线超过了阈值,那么就可以将该点确定为圆心。
2.确定了圆心,那么圆上的点到圆心的距离是固定的,即为半径,设定阈值,如果有很多点到圆心的距离超过了阈值,那么该距离就设定为半径
3.知道了半径和圆心,那么就获取到了整个圆的方程,就可以进行圆的检测和绘制了。
霍夫圆检测代码:

import cv2 as cv
import numpy as np
import  matplotlib.pyplot as plot


img=cv.imread(r"C:\Users\Windows\Desktop\0072.jpg")
img1=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#转灰度图
img1=cv.Canny(img1,10,76)#边缘检测
plot.imshow(img1,cmap=plot.cm.gray)
plot.show()
img4=cv.HoughCircles(img1,cv.HOUGH_GRADIENT,1,200,param1=100,param2=50,minRadius=60,maxRadius=110)
print(img4)
for i in img4[0,:]:
    cv.circle(img1,(i[0],i[1]),i[2],(255,255,0),2)#绘制检测到的圆
plot.imshow(img1,cmap=plot.cm.gray)
plot.show()

霍夫圆参数记录:

cv.HoughCircles(img1,cv.HOUGH_GRADIENT,1,200,param1=100,param2=50,minRadius=60,maxRadius=110)

img=待处理图像
cv.HOUGH_GRADIENT=霍夫变换使用的算法
1,200=霍夫空间分辨率,圆心之间的最小距离
param1=100 =高阈值
param2=50 =检测圆心和确定半径时用的阈值
minRadius=60,maxRadius=110 =检测到圆半径的最小值和最大值

实验结果

霍夫圆检测之前:
python-opencv[图像处理-霍夫圆检测]_第1张图片
霍夫圆检测之后:
python-opencv[图像处理-霍夫圆检测]_第2张图片
小记:参数调节不是很对,所以有一些偏差。

你可能感兴趣的:(python,opencv,图像处理)