一、生成6个圆环
生成6个半径 50<R<80 的圆环 ,圆心坐标(200,500)、(500,500)
private void uiButton1_Click(object sender, EventArgs e)
{
Scalar s = new Scalar(155, 155, 155);//创建一个颜色对象
OpenCvSharp.Scalar scalar = new OpenCvSharp.Scalar(0, 0,0);
Mat mm = new Mat(1000, 2000, MatType.CV_8UC3, s);
for(int i=0;i<6;i++)
{ Cv2.Circle(mm, 200+i*300, 500, 50, scalar, 30); }
picShowOri.Image = mm.ToBitmap();
src_img = new Mat();
mm.CopyTo(src_img);
}
二、霍夫圆检测参数
使用霍夫变换查找灰度图像中的圆。参数:
- 1:输入参数: 8位、单通道、灰度输入图像
- 2:实现方法:目前,唯一的实现方法是HoughCirclesMethod.Gradient
- 3: dp :累加器分辨率与图像分辨率的反比。默认=1
- 4:minDist: 检测到的圆的中心之间的最小距离。(最短距离-可以分辨是两个圆的,否则认为是同心圆
- 5:param1: 第一个方法特定的参数。[默认值是100] canny边缘检测阈值
- 6:param2: 第二个方法特定于参数。[默认值是100] 中心点累加器阈值
- 7:minRadius: 候选圆心最小半径
- 8:maxRadius: 候选圆心最大半径
二、识别圆
- 识别 30<半径<200 ,识别出内环的圆。
CircleSegment[] cs = Cv2.HoughCircles(m2, HoughMethods.Gradient, 1, 80, 60, 20, 30, 200);
- 识别 50<半径<200 ,识别出外环的圆。
CircleSegment[] cs = Cv2.HoughCircles(m2, HoughMethods.Gradient, 1, 80, 60, 20, 50, 200);
- 调整HoughCircles函数,筛选出所需的圆。
网友评论