Language - C#/C#(OpencvSharp)

C# OpencvSharp - Blob Labeling Example

KimTory 2021. 11. 17. 21:30

▶ Language : C#

▶ IDE         : Visual Studio 2017

 

 

using OpenCvSharp.Blob;
using OpenCvSharp;

Mat src = new Mat(@"d:\OpencvSharp\\blob1.png");
Mat dst = new Mat();

// src image load check
if (src.Empty() == true) return;

// bgr to gray convert (opencv - bgr 순서)
Cv2.CvtColor(src, dst, ColorConversionCodes.BGR2GRAY);
Cv2.Threshold(dst, dst, 0, 255, ThresholdTypes.Otsu);

Cv2.ImShow("src", src);
Cv2.ImShow("dst", dst);

// Shallow Copy
Mat result = src;
// Deep Copy
//src.CopyTo(result);
//Mat result1 = src.Clone();
//Mat result = new Mat(src.Size(), MatType.CV_8UC3);

CvBlobs blobs = new CvBlobs();
blobs.Label(dst);
blobs.RenderBlobs(src, result);

foreach (var item in blobs)
{
    // KeyValuePair<int, CvBlob> = item
    // int - label Number, CvBlob - Blob detection 정보
    CvBlob blob = item.Value;

    // StartingPoint - bounding box center x,y (label 시작 위치)
    Cv2.Circle(result, blob.Contour.StartingPoint, 4, Scalar.Red, 2, LineTypes.AntiAlias);
    Cv2.PutText(result, blob.Label.ToString(), new OpenCvSharp.Point(blob.Centroid.X, blob.Centroid.Y), HersheyFonts.HersheyComplex, 1, Scalar.Yellow, 2, LineTypes.AntiAlias);
}

// result image output
Cv2.ImShow("reslut", result);

Cv2.WaitKey(0);
Cv2.DestroyAllWindows();

 

Result Image

 

 

'Language - C# > C#(OpencvSharp)' 카테고리의 다른 글

[C# - OpencvSharp]  (0) 2022.05.17
C# OpencvSharp - SetTo  (0) 2021.11.08