円検出のために OpenCV で HoughCircles に出会いました。ただし、検出された円間の最小距離を指定するパラメーターがあります。私の懸念は、2 つの円が同心である場合、つまり 1 つの円が別の円の中にある場合に機能するかどうかです。
ありがとうシャシャンク
円検出のために OpenCV で HoughCircles に出会いました。ただし、検出された円間の最小距離を指定するパラメーターがあります。私の懸念は、2 つの円が同心である場合、つまり 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);
代替案が見つかった場合は、他のオプションを一度試して、更新します。
私が過去に使用した別の解決策は、cv2.HoughCircles
関数をループで呼び出すことでしたが、見つかった円の領域を近くのピクセルの色に置き換えました。
これが常に可能であるとは限らないことは理解していますが、アプリケーションによって異なります。