人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動態(tài)

OpenCV霍夫圓變換cv2.HoughCircles()

發(fā)布日期:2022-02-20 19:25 | 文章來源:源碼之家

這篇博客將學習如何使用霍夫圓變換在圖像中找到圓圈,OpenCV使用cv2.HoughCircles()實現(xiàn)霍夫圓變換。

circles = cv2.HoughCircles(img,
cv2.HOUGH_GRADIENT, 1, 20,
param1=50, param2=40, minRadius=25, maxRadius=0)

img: 待檢測的灰度圖cv2.HOUGH_GRADIENT:檢測的方法,霍夫梯度1:檢測的圓與原始圖像具有相同的大小,dp=2,檢測的圓是原始圖像的一半20:檢測到的相鄰圓的中心的最小距離(如果參數(shù)太小,除了一個真實的圓外,還可能會錯誤地檢測到多個相鄰圓。如果太大,可能會漏掉一些圓。)param1:在#HOUGHŠu梯度的情況下,它是較高的. 兩個閾值傳遞到Canny邊緣檢測器(較低的一個小兩倍)。param2:在#HOUGHŠu梯度的情況下,它是檢測階段圓心的累加器閾值。它越小,就越可能檢測到假圓;minRadius:最小圓半徑maxRadius:最大圓半徑,如果<=0,則使用最大圖像尺寸。如果<0,則返回沒有找到半徑的中心。

1. 效果圖

原始圖 VS 檢測圓效果圖如下:

如下右圖可以看到3個外側(cè)圓綠色,圓心紅色被成功檢測到;

圓的最小半徑設置由25調(diào)整為10,也可能會錯誤的檢測到圓,效果圖如下:

檢測圓半徑的閾值(param2設置35)的結(jié)果,最小圓半徑設置10,也可能會錯誤的檢測到圓,效果圖如下:

2. 源碼

# 霍夫圓檢測
import cv2
import numpy as np
cimg = cv2.imread('opencv_logo_350.jpg')
cv2.imshow("origin", cimg)
cv2.waitKey(0)
img = cv2.cvtColor(cimg,cv2.COLOR_BGR2GRAY)
img = cv2.medianBlur(img, 5)
cimg = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
# - img: 待檢測的灰度圖
# - cv2.HOUGH_GRADIENT:檢測的方法,霍夫梯度
# - 1:檢測的圓與原始圖像具有相同的大小,dp=2,檢測的圓是原始圖像的一半
# - 20:檢測到的圓的中心的最小距離(如果參數(shù)為太小,除了一個真實的圓外,還可能會錯誤地檢測到多個相鄰圓。如果太大,可能會漏掉一些圓。)
# - param1:在#HOUGHŠu梯度的情況下,它是較高的. 兩個閾值傳遞到Canny邊緣檢測器(較低的一個小兩倍)。
# - param2:在#HOUGHŠu梯度的情況下,它是檢測階段圓心的累加器閾值。它越小,就越可能檢測到假圓;
# - minRadius:最小圓半徑,也可能會檢測到假圓
# - maxRadius:最大圓半徑,如果<=0,則使用最大圖像尺寸。如果<0,則返回沒有找到半徑的中心。
circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20,param1=50, param2=40, minRadius=0, maxRadius=0)
# 最小圓半徑設置不合適,也可能會檢測到假圓
# circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20,
#param1=50, param2=40, minRadius=0, maxRadius=0)
# circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20,
#param1=50, param2=30, minRadius=10, maxRadius=0)
circles = np.uint16(np.around(circles))
print(len(circles))
print(circles)
for i in circles[0, :]:
 # 繪制外圈圓(藍色)
 cv2.circle(cimg, (i[0], i[1]), i[2], (0, 255, 0), 2)
 # 繪制圓心(紅色)
 cv2.circle(cimg, (i[0], i[1]), 2, (0, 0, 255), 3)
cv2.imshow('detected circles', cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

參考

https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_houghcircles/py_houghcircles.html#hough-circles

到此這篇關于OpenCV霍夫圓變換cv2.HoughCircles()的文章就介紹到這了,更多相關OpenCV霍夫圓變換內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!

海外穩(wěn)定服務器

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部