opencv学习(二十一):圆检测

检测原理:

参考链接:https://www.cnblogs.com/ssyfj/p/9275977.html#一houghcircles方法

                    https://blog.csdn.net/zhaocj/article/details/50454847

实例演示:

代码如下:

#导入cv模块
import cv2 as cv
import numpy as np

#霍夫圆检测
def detect_circle_demo(image):
    # dst = cv.bilateralFilter(image, 0, 150, 5)  #高斯双边模糊,不太好调节,霍夫噪声敏感,所以要先消除噪声
    # cv.imshow("1",dst)
    # dst = cv.pyrMeanShiftFiltering(image,5,100)  #均值迁移,EPT边缘保留滤波,霍夫噪声敏感,所以要先消除噪声
    # cv.imshow("2", dst)
    dst = cv.GaussianBlur(image,(13,15),15) #使用高斯模糊,修改卷积核ksize也可以检测出来
    # cv.imshow("3", dst)
    gray = cv.cvtColor(dst,cv.COLOR_BGR2GRAY)
    circles = cv.HoughCircles(gray,cv.HOUGH_GRADIENT,1,20,param1=50,param2=30,minRadius=0,maxRadius=0)
    circles = np.uint16(np.around(circles))#around对数据四舍五入,为整数
    for i in circles[0,:]:
        cv.circle(image,(i[0],i[1]),i[2],(0,0,255),2)
        cv.circle(image,(i[0],i[1]),2,(255,0,0),2)   #圆心
    cv.imshow("detect_circle_demo",image)

print("------------Python Opencv Tutorial!-------------")
# 读取图像,支持 bmp、jpg、png、tiff 等常用格式
src = cv.imread("F:/Projects/images/coins.png")
#创建窗口并显示图像
cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)   #显示原图
detect_circle_demo(src)
cv.waitKey(0)
#释放窗口
cv.destroyAllWindows()

运行效果:

猜你喜欢

转载自blog.csdn.net/weixin_39036700/article/details/84886250