用 OpenCVSharp 4.5 跑一遍 OpenCV 官方教程
原OpenCV官方教程链接:OpenCV: Shi-Tomasi corner detector
using System;
using OpenCvSharp;
namespace ConsoleApp1
{
class tutorial44 : ITutorial
{
static Mat src = new Mat(), src_gray = new Mat();
static int maxCorners = 23;
static int maxTrackbar = 100;
static RNG rng = new RNG(12345);
string source_window = "Image";
private void goodFeaturesToTrack_Demo(int pos, IntPtr userdata)
{
maxCorners = Math.Max(maxCorners, 1);
double qualityLevel = 0.01;
double minDistance = 10;
int blockSize = 3, gradientSize = 3;
bool useHarrisDetector = false;
double k = 0.04;
Mat copy = src.Clone();
Point2f[] corners = Cv2.GoodFeaturesToTrack(src_gray, maxCorners, qualityLevel, minDistance, new Mat(), blockSize, useHarrisDetector, k);
Console.WriteLine("** Number of corners detected:{0} ", corners.Length);
int radius = 4;
for (int i = 0; i < corners.Length; i++)
{
Cv2.Circle(copy, (Point)corners[i], radius, new Scalar(rng.Uniform(0, 255), rng.Uniform(0, 256), rng.Uniform(0, 256)), Cv2.FILLED);
}
Cv2.NamedWindow(source_window);
Cv2.ImShow(source_window, copy);
}
public void Run()
{
src = Cv2.ImRead(@"I:\csharp\images\pic3.png");
if (src.Empty())
{
Console.WriteLine("Could not open or find the image!");
return;
}
Cv2.CvtColor(src, src_gray, ColorConversionCodes.BGR2GRAY);
Cv2.NamedWindow(source_window);
Cv2.CreateTrackbar("Max corners:", source_window, ref maxCorners, maxTrackbar, goodFeaturesToTrack_Demo);
Cv2.ImShow(source_window, src);
goodFeaturesToTrack_Demo(0, IntPtr.Zero);
Cv2.WaitKey();
}
}
}