用OpenCVSharp4.5 跑一遍OpenCV官方教程
OpenCV官方教程链接:OpenCV: Hough Circle Transform
核心函数: HoughCircles()
using System;
using OpenCvSharp;
namespace ConsoleApp1
{
class tutorial16 : ITutorial
{
public void Run()
{
using (Mat src = new Mat("I:\\csharp\\images\\smarties.png", ImreadModes.Color))
using (Mat gray = new Mat())
{
Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);
Cv2.MedianBlur(gray, gray, 5);
CircleSegment[] circles = Cv2.HoughCircles(gray, HoughModes.Gradient, 1,
gray.Rows / 16, // change this value to detect circles with different distances to each other
100, 30, 1, 30 // change the last two parameters
// (min_radius & max_radius) to detect larger circles
);
for (int i = 0; i < circles.Length; i++)
{
Point2f center = circles[i].Center;
Cv2.Circle(src, (int)center.X, (int)center.Y, 1, new Scalar(0, 100, 100), 3, LineTypes.AntiAlias);
// circle outline
Cv2.Circle(src, (int)center.X, (int)center.Y, (int)circles[i].Radius, new Scalar(255, 0, 255), 3, LineTypes.AntiAlias);
}
using (new Window("detected circles", src))
Window.WaitKey();
}
}
}
}