簡體   English   中英

嘈雜圖像中的圓圈檢測

[英]circle detection in noisy a image

我有氣泡筏的以下圖像 在此處輸入圖片說明

這是我用來檢測圓的代碼:

import cv2
import numpy as np
import sys

img = cv2.imread(sys.argv[1],0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)

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

circles = np.uint16(np.around(circles))
for i in circles[0,:]:
    # draw the outer circle
    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)
    # draw the center of the circle
    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

cv2.imshow('detected circles',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()

不幸的是,我只發現了幾個圈子: 在此處輸入圖片說明

我想檢測圖像中的大多數圓圈。 由此,我可以以編程方式找到圖像中央附近的錯位。 任何幫助,不勝感激。 提前致謝。

編輯:根據以下shortcipher3的建議,我將param2從HoughCircles降低到15,並將最小半徑增加到16,現在我可以檢測到大多數圓圈,如下所示: 在此處輸入圖片說明

我不清楚您的問題是什么,我假設您想檢測更多的圈子?

HoughCircles的文檔可以在這里找到:

https://docs.opencv.org/2.4/modules/imgproc/doc/feature_detection.html?highlight=houghcircles

根據文檔,我會說您的閾值在調用circles = cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,20, param1=50,param2=30,minRadius=5,maxRadius=25)中並不理想。

我首先嘗試降低param2 ,如果那對您不起作用,也請使用param1的值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM