霍夫圆检测原理及OpenCV 找圆API使用(C#)

本文介绍如何使用霍夫圆变换检测图像中的圆形,并提供基于.NET环境下OpenCvSharp库的具体实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理:
直角坐标系中圆可以表示为:
在这里插入图片描述
在这里插入图片描述
对应参数方程:
在这里插入图片描述
对于确定的某点像素坐标(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库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值