美文网首页
OpenCV之Hough圆环变换

OpenCV之Hough圆环变换

作者: 大龙10 | 来源:发表于2023-07-10 07:09 被阅读0次

    一、原理

      圆形的一般性方程表示为(x-a)²+(y-b)²=r²。那么就有三个自由度圆心坐标a,b,和半径r。这就意味着一个圆需要三个参数来确定。
      OpenCV 中提供的 cv.HoughCircle() 函数里面可以设定半径r的取值范围,相当于有一个先验设定,在每一个r来说,在二维空间内寻找a和b就可以了,能够减少计算量。

    二、函数

    cv2.HoughCircles(image, method, dp, minDist, circles=None, param1=None, param2=None, minRadius=None, maxRadius=None)

    • image
      8位、单通道灰度图像
    • method
      定义检测图像中圆的方法。目前唯一实现的方法是cv2.HOUGH_GRADIENT。
    • dp 累加器图像的分辨率。累加器分辨率与图像分辨率的反比。
      dp获取越大,累加器数组越小。
    • minDist
      两个不同圆之间的最小距离。
    • param1
      用于Canny的边缘阀值上限,下限被置为上限的一半。
    • param2
      cv2.HOUGH_GRADIENT方法的累加器阈值。
    • minRadius 最小圆半径
    • maxRadius 最大圆半径

    三、代码

    import cv2
    import numpy as np
    img = cv2.imread('d:\\contours.png',0)
    print(img.shape)
    img = cv2.medianBlur(img,5)
    cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
    circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,10,param1=10,param2=50,minRadius=10,maxRadius=200)
    circles = np.uint16(np.around(circles))
    print(circles )
    for i in circles[0,:]:
        # 画圆
        cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,255),2)
        # 画圆心点
        cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
    cv2.imshow('detected circles',cimg)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    四、资料

    编程学习网
    https://www.ngui.cc/el/3245276.html?action=onClick
    

    相关文章

      网友评论

          本文标题:OpenCV之Hough圆环变换

          本文链接:https://www.haomeiwen.com/subject/chcdudtx.html