目次
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)
最終結果:(検出効果は依然として非常に良好です)
読んでいただきありがとうございます。ご質問がある場合は、コメント欄にコメントしてください。