using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using Emgu.CV;
using Emgu.CV.UI;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
String imagePath = "d:\\sq.fu\\Desktop\\2.png";
Image<Bgr, Byte> src = new Image<Bgr, byte>(@imagePath);
CvInvoke.Imshow("src", src);
//将图像转换为灰度
UMat grayImage = new UMat();
CvInvoke.CvtColor(src, grayImage, ColorConversion.Bgr2Gray);
//使用高斯滤波去除噪声
CvInvoke.GaussianBlur(grayImage, grayImage, new Size(5, 5),3);
//CvInvoke.Imshow("Blur Image", grayImage);
//霍夫圆检测
CircleF[] circles = CvInvoke.HoughCircles(grayImage, HoughType.Gradient, 2.0, 20.0, 100.0, 180.0, 5);
#region draw circles
Image<Bgr, Byte> circleImage = src.Clone();
foreach (CircleF circle in circles)
circleImage.Draw(circle, new Bgr(Color.Blue), 4);
CvInvoke.Imshow("HoughCircles", circleImage);
CvInvoke.WaitKey(0);
#endregion
}
}
}