ハフ円検出原理と OpenCV 円検出 API の使用 (C#)

原理:
直交座標系の円は次のように表現できます。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
対応するパラメータ方程式:
ここに画像の説明を挿入します
特定の点のピクセル座標 (x, y) に対して、(a, b, r) のさまざまな組み合わせを選択すると、(x, y) が得られます。 、a、b、r 座標系で画像を描画します:
ここに画像の説明を挿入します
API:

public static CircleSegment[] HoughCircles(InputArray image, HoughModes method, double dp, double minDist, double param1 = 100, double param2 = 100, int minRadius = 0, int maxRadius = 0);

ここに画像の説明を挿入します
使用:

if (fileDialog.ShowDialog() == DialogResult.OK)
{
    
    

    picFile = fileDialog.FileName;
    inputMat = Cv2.ImRead(picFile, ImreadModes.Grayscale);
    Mat finallyOutMate = Cv2.ImRead(picFile, ImreadModes.AnyColor);

    var circles = Cv2.HoughCircles(inputMat, HoughModes.Gradient, 1, 10, 100, 100, 40, 800);
    
    //绘制圆
    Scalar scalar = new Scalar(255, 0, 0);
    foreach (var m in circles)
    {
    
    

        Cv2.Circle(finallyOutMate, (int)m.Center.X, (int)m.Center.Y, (int)m.Radius, scalar,4);
    }

    picBox_Display.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(inputMat);
    picBox_After.Image = OpenCvSharp.Extensions.BitmapConverter.ToBitmap(finallyOutMate);
}

ここに画像の説明を挿入します

追記:
この場合、.NET で使用される OpenCV ライブラリはOpenCvSharp4です。

.NET環境用のOpenCvライブラリ

おすすめ

転載: blog.csdn.net/weixin_40671962/article/details/127311154