OpenCV的霍夫曼圆检测

import cv2 as cv
import numpy as np


def detect_circles_demo(image):
    dst = cv.pyrMeanShiftFiltering(image, 10, 100)  # 均值偏移滤波
    '''
    def pyrMeanShiftFiltering(src: Any,     # 输入的8-比特,3-信道图象
                          sp: Any,          # 空间窗的半径
                          sr: Any,          # 色彩窗的半径
                          dst: Any = None,
                          maxLevel: Any = None, # 最大层次的金字塔分割
                          termcrit: Any = None) -> None
    '''
    cimage = cv.cvtColor(dst, cv.COLOR_BGR2GRAY)    # 变成灰度图像
    circles = cv.HoughCircles(cimage, cv.HOUGH_GRADIENT, 1, 20, param1=50, param2=30, minRadius=0, maxRadius=0)
    '''
    def HoughCircles(image: Any,        # 输入 8-比特、单通道灰度图像
                 method: Any,           # Hough 变换方式,目前只支持cv.HOUGH_GRADIENT,基于梯度图像来做
                 dp: Any,               # 累加器图像的分辨率。这个参数允许创建一个比输入图像分辨率低的累加器。
                                        # (这样做是因为有理由认为图像中存在的圆会自然降低到与图像宽高相同数量的范畴)。
                                        # 如果dp设置为1,则分辨率是相同的;如果设置为更大的值(比如2),累加器的分辨率受此影响会变小(此情况下为一半)。
                                        # dp的值不能比1小。
                 minDist: Any,          # 该参数是让算法能明显区分的两个不同圆之间的最小距离。
                 circles: Any = None,   # 
                 param1: Any = None,    # 用于Canny的边缘阀值上限,下限被置为上限的一半。
                 param2: Any = None,    # 累加器的阈值。
                 minRadius: Any = None, # 最小圆半径。
                 maxRadius: Any = None) -> None # 最大圆半径。
    '''
    circles = np.uint16(np.around(circles))     # 转成整数
    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("circles", image)


src = cv.imread("C:/Users/admin/Pictures/Saved Pictures/coins.jpg")
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
detect_circles_demo(src)
cv.waitKey(0)
cv.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑟寒凌风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值