2

opencvのpythonラッパーを使用して、画像上のすべての円オブジェクトを見つけようとしています。このようなもの。

cv2.HoughCirclesを使用していますが、最適なパラメーターが見つかりません。それはまったく可能ですか?

私のコード:

import cv, cv2
import numpy as np

im = cv2.imread("C:/1.jpg")

grey = cv2.cvtColor(im, cv.CV_RGB2GRAY)
blur= grey
#blur = cv2.GaussianBlur(grey, (0,0), 10)
circles =  cv2.HoughCircles(blur, cv2.cv.CV_HOUGH_GRADIENT, 2, 5, np.array([]), 40, 80, 5, 50)#params?
if circles is not None:
        for c in circles[0]:
                cv2.circle(im, (c[0],c[1]), c[2], (0,255,0),2)
edges = cv2.Canny( blur, 40, 80 )

cv2.imwrite("C:/circle.jpg",im)
cv2.imwrite("C:/canny.jpg",edges)

ここに画像の説明を入力

ここに画像の説明を入力

4

1 に答える 1

1

これは、提供された画像に関して簡単な作業ではありません。

半径に適した範囲を見つけるようにしてください ( minRadius, maxRadius: 大きすぎず、そうしないと、いくつかの小さな円が 1 つの大きな円として表示される可能性があります)、結果を改善することもできます。

それ以外の場合は、オブジェクトを別のアプローチで分離することをお勧めします (たとえば、流域)

于 2013-10-28T15:00:16.047 に答える