要使用OpenCV檢測圖像中的圓形,可以使用Hough Circle Transform算法。以下是一個簡單的例子,演示如何在圖像中檢測圓形:
import cv2
import numpy as np
# 讀取圖像
image = cv2.imread('circle.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 高斯濾波
gray_blurred = cv2.GaussianBlur(gray, (9, 9), 0)
# 使用Hough Circle Transform檢測圓形
circles = cv2.HoughCircles(gray_blurred, cv2.HOUGH_GRADIENT, dp=1, minDist=20,
param1=50, param2=30, minRadius=0, maxRadius=0)
if circles is not None:
circles = np.uint16(np.around(circles))
for i in circles[0, :]:
# 繪制圓形邊界
cv2.circle(image, (i[0], i[1]), i[2], (0, 255, 0), 2)
# 繪制圓心
cv2.circle(image, (i[0], i[1]), 2, (0, 0, 255), 3)
# 顯示結果
cv2.imshow('Detected Circles', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上面的代碼中,首先讀取圖像并將其轉換為灰度圖像。然后,對灰度圖像進行高斯模糊處理。接下來,使用cv2.HoughCircles()
函數檢測圖像中的圓形。最后,遍歷檢測到的圓形,并用綠色圓圈繪制圓形的邊界,用紅色點繪制圓心。
注意:在使用Hough Circle Transform算法時,需要調整函數的參數以獲得最佳效果,具體參數的意義可以參考OpenCV官方文檔。