黃巖做網(wǎng)站的公司搜索引擎優(yōu)化策略有哪些
Hough 圓環(huán)變換(Hough Circle Transform)是一種用于在圖像中檢測(cè)圓環(huán)的技術(shù)。與 Hough 直線變換類似,它通過(guò)在參數(shù)空間中表示圖像中的圓環(huán),將圓環(huán)檢測(cè)問(wèn)題轉(zhuǎn)換為參數(shù)空間的累加問(wèn)題。OpenCV 提供了 cv2.HoughCircles()
函數(shù)來(lái)執(zhí)行 Hough 圓環(huán)變換。
cv2.HoughCircles()
circles = cv2.HoughCircles(image, method, dp, minDist, param1, param2, minRadius=0, maxRadius=0)
參數(shù)說(shuō)明:
image
: 輸入的灰度圖像。method
: 圓環(huán)檢測(cè)的方法。目前 OpenCV 中只支持cv2.HOUGH_GRADIENT
,表示使用基于梯度的檢測(cè)方法。dp
: 累加器分辨率與圖像分辨率的倒數(shù)比。如果設(shè)置為1,累加器的分辨率與圖像分辨率相同;如果大于1,累加器的分辨率小于圖像分辨率。minDist
: 檢測(cè)到的圓之間的最小距離。param1
: Canny 邊緣檢測(cè)的高閾值。param2
: 圓心累加器的閾值。只有當(dāng)某個(gè)圓的累加值高于該閾值時(shí),該圓才會(huì)被檢測(cè)到。minRadius
: 檢測(cè)的圓的最小半徑。maxRadius
: 檢測(cè)的圓的最大半徑。
返回值:
circles
: 檢測(cè)到的圓的參數(shù)。每行表示一個(gè)檢測(cè)到的圓,包括圓心的坐標(biāo)和半徑。
以下是一個(gè)簡(jiǎn)單的示例,演示如何使用 Hough 圓環(huán)變換檢測(cè)圖像中的圓環(huán):
import cv2
import numpy as np
import matplotlib.pyplot as plt# 讀取圖像并轉(zhuǎn)換為灰度
img = cv2.imread( r"C:\Users\mzd\Desktop\opencv\3.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 高斯模糊
blurred = cv2.GaussianBlur(gray, (9, 9), 2)# 執(zhí)行 Hough 圓環(huán)變換
circles = cv2.HoughCircles(blurred, cv2.HOUGH_GRADIENT, dp=1, minDist=50, param1=50, param2=30, minRadius=10, maxRadius=100)# 將檢測(cè)到的圓心坐標(biāo)和半徑轉(zhuǎn)換為整數(shù)
circles = np.uint16(np.around(circles))# 在原圖上繪制檢測(cè)到的圓環(huán)
for i in circles[0, :]:cv2.circle(img, (i[0], i[1]), i[2], (0, 255, 0), 2) # 繪制圓環(huán)cv2.circle(img, (i[0], i[1]), 2, (0, 0, 255), 3) # 繪制圓心# 顯示原圖和檢測(cè)到的圓環(huán)
plt.figure(figsize=(10, 5))plt.subplot(121), plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original Image with Circles'), plt.axis('off')plt.subplot(122), plt.imshow(blurred, cmap='gray')
plt.title('Blurred Image'), plt.axis('off')plt.show()
在這個(gè)示例中,我們首先讀取了一幅圖像,將其轉(zhuǎn)換為灰度圖像,然后對(duì)圖像進(jìn)行高斯模糊。接著,使用 cv2.HoughCircles()
函數(shù)進(jìn)行 Hough 圓環(huán)變換,并在原圖上繪制檢測(cè)到的圓環(huán)。最后,通過(guò) Matplotlib 顯示原圖和模糊圖像。