Python を使用したハフ円検出のテスト

目次

1。目的

2. ハフガーデン検出の原理

3. opencv テストを使用する


1。目的

 Pythonを使ってハフ円検出を書く過程を記録する

2. ハフガーデン検出の原理

少し!責めないでください、これには数学的原理が関係しています。時間があるときに追加しますので、最初に使用します。(決して、わからないわけではないんです。ふふふ)

3. opencv テストを使用する

まず、非常に標準的な画像を使用してテストします。これは、ptp 上に直接描画した画像です。

import cv2 as cv
import numpy as np
 
#读取文件
origin = cv.imread('images/origin3.png', 1)
img = cv.imread('images/origin3.png', 0)

#霍夫圆检测
circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 100, param1=50, param2=30, minRadius=0, maxRadius=100)
 
circles = np.uint16(np.around(circles))
 
#将检测到的圆圈标上去
for i in circles[0, :]:  # 遍历矩阵每一行的数据
    cv.circle(origin, (i[0], i[1]), i[2], (0, 255, 0), 2)
    cv.circle(origin, (i[0], i[1]), 2, (0, 0, 255), 3)
 
#显示图像
cv.imshow("image", origin)
cv.waitKey(0)
cv.destroyAllWindows()

認識は完全に機能します。

ランダムな画像を使用する:

param1 と param2 のパラメータと半径を調整します。

import cv2 as cv
import numpy as np
 
#读取文件
origin = cv.imread('images/origin1.png', 1)
img = cv.imread('images/origin1.png', 0)

# cv.imshow("image", origin)
# cv.waitKey(0)

#霍夫圆检测
circles = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 13, param1=50, param2=18, minRadius=0, maxRadius=20)
 
circles = np.uint16(np.around(circles))
 
#将检测到的圆圈标上去
for i in circles[0, :]:  # 遍历矩阵每一行的数据
    cv.circle(origin, (i[0], i[1]), i[2], (0, 255, 0), 2)
    cv.circle(origin, (i[0], i[1]), 2, (0, 0, 255), 3)
 
#显示图像
cv.imshow("image", origin)
cv.waitKey(0)
cv.destroyAllWindows()

さらに 2 つの点が特定され、これら 2 つの点の半径は比較的小さいため、扱いが簡単です。彼に指示してください、ああ悲しいです、コントロールのためにラジオを

 円 = cv.HoughCircles(img, cv.HOUGH_GRADIENT, 1, 13, param1=50, param2=18, minRadius=15, maxRadius=20)

最終結果:(検出効果は依然として非常に良好です)

 読んでいただきありがとうございます。ご質問がある場合は、コメント欄にコメントしてください。

おすすめ

転載: blog.csdn.net/qq_39298227/article/details/126675097