[opencv]ハフ円変換(画像内の円を見つけ、3Dアキュムレータがハフ変換を実行し、エッジの勾配情報を使用してハフ勾配法を実行します。)

4_14_ハフサークル変換-OpenCV中国語公式ドキュメント

ハフ変換を使用して画像内の円を見つける方法を学びます。-次の関数が表示されます:cv.HoughCircles()

 仮説

円は数学的に次のように表されます。ここで、(xcenter、ycenter)は円の中心であり、rは円の半径です。方程式から、3つのパラメーターがあることがわかります。したがって、ハフ変換用の3Dアキュムレータが必要ですが、これは非常に非効率的です。したがって、OpenCVは、よりトリッキーな方法である、エッジの勾配情報を使用するハフ勾配法を使用します(ハフ勾配を理解するには、より注意を払う必要があります)。

ここで使用する関数は**cv.HoughCircles**()です。ドキュメントでよく説明されている多くのパラメータがあります。それでは、コードに直接進みましょう。

import numpy as np
import cv2 as cv
img = cv.imread('opencv-logo-white.png',0)
img = cv.medianBlur(img,5)
cimg = cv.cvtColor(img,cv.COLOR_GRAY2BGR)
circles = cv.HoughCircles(img,cv.HOUGH_GRADIENT,1,20,
                            param1=50,param2=30,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
    # 绘制外圆
    cv.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
    # 绘制圆心
    cv.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
cv.imshow('detected circles',cimg)
cv.waitKey(0)
cv.destroyAllWindows()

結果は次のとおりです。 

 

おすすめ

転載: blog.csdn.net/dujuancao11/article/details/122451269