程序流程如下:
1、把原图灰度化并二值化处理
Cv2.CvtColor(srcImage, binaryImage, ColorConversionCodes.BGRA2GRAY);
Cv2.Threshold(binaryImage, binaryImage, thresh: 100, maxval: 255, type: ThresholdTypes.Binary);
2、构造detectorParams参数,初始化simpleBlobDetector,并根据原图得到关切点。
需要注意,simpleBlobDetector在opencvsharp3里面在opencvSharp下,这个例程并没有用blob库,不知道在sharp4里面是否能正常编译。
var simpleBlobDetector = SimpleBlobDetector.Create(detectorParams);
var keyPoints = simpleBlobDetector.Detect(binaryImage);
3、为方便初学者学习,做了热点数量,各个中心坐标的输出
keyPoints.Length
foreach (var keyPoint in keyPoints)
{
Console.WriteLine("X: {0}, Y: {1}", keyPoint.Pt.X, keyPoint.Pt.Y);
}
4、把原图和热点框图放在一起
var imageWithKeyPoints = new Mat();
Cv2.DrawKeypoints(
image: binaryImage,
keypoints: keyPoints,
outImage: imageWithKeyPoints,
color: Scalar.FromRgb(255, 0, 0),
flags: DrawMatchesFlags.DrawRichKeypoints);
完毕。后续需要继续用相关函数,这里先放放。