3

円検出のために OpenCV で HoughCircles に出会いました。ただし、検出された円間の最小距離を指定するパラメーターがあります。私の懸念は、2 つの円が同心である場合、つまり 1 つの円が別の円の中にある場合に機能するかどうかです。

ありがとうシャシャンク

4

4 に答える 4

1

表示されている画像で試してみました同心円

しかし、それは1つの円だけを検出しています...ここにコードがあります

Mat image_ = imread("E:/Work_DataBase/circle.jpg",3);
Mat image_temp;
cvtColor( image_, image_temp, CV_BGR2GRAY );
vector<Vec3f> circles;
HoughCircles( image_temp, circles, CV_HOUGH_GRADIENT, 1, image_temp.rows/8,100, 100, 10, 200 );
for( size_t i = 0; i < circles.size(); i++ )
{
    Point center(cvRound(circles[i][0]), cvRound(circles[i][1]));
    int radius = cvRound(circles[i][2]);
    // circle center
    circle( image_, center, 3, Scalar(0,255,0), -1, 8, 0 );
   // circle outline
    circle( image_, center, radius, Scalar(0,0,255), 3, 8, 0 );
}
imshow("circles",image_);
waitKey(0);

代替案が見つかった場合は、他のオプションを一度試して、更新します。

于 2012-08-09T18:40:53.467 に答える
0

私が過去に使用した別の解決策は、cv2.HoughCircles関数をループで呼び出すことでしたが、見つかった円の領域を近くのピクセルの色に置き換えました。

これが常に可能であるとは限らないことは理解していますが、アプリケーションによって異なります。

于 2021-12-11T11:32:41.057 に答える