-
画像の読み込みと前処理 まず、OpenCVを使用して画像を読み込みます。次に、必要な場合は画像を前処理することができます。一般的な前処理手法には、画像のグレースケール変換、ノイズの除去、および輪郭の抽出があります。
import cv2 # 画像の読み込み image = cv2.imread("image.jpg") # グレースケール変換 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # ノイズの除去 blurred = cv2.GaussianBlur(gray, (5, 5), 0) # 輪郭の抽出 edges = cv2.Canny(blurred, 50, 150)
-
円の検出 次に、Hough変換を使用して円を検出します。Hough変換は、画像中の直線や円などの形状を検出するための一般的な手法です。
circles = cv2.HoughCircles(edges, cv2.HOUGH_GRADIENT, dp=1, minDist=100, param1=50, param2=30, minRadius=0, maxRadius=0)
上記のコードでは、
edges
は輪郭抽出された画像、dp
は輪郭解像度の逆比、minDist
は検出された円の中心間の最小距離、param1
とparam2
は検出の精度を調整するパラメータです。minRadius
とmaxRadius
は検出する円の半径範囲を指定します。 -
検出された円の描画 最後に、検出された円を元の画像に描画します。
if circles is not None: circles = np.round(circles[0, :]).astype("int") for (x, y, r) in circles: cv2.circle(image, (x, y), r, (0, 255, 0), 2) cv2.imshow("Detected Circles", image) cv2.waitKey(0) cv2.destroyAllWindows()
以上が、OpenCVとPythonを使用して円検出を行う基本的な手順です。これらのコード例を使用して、円検出についてのブログ投稿を執筆することができます。