C#/C# OpenCV/

C# OpenCV 7-9. Blob(2) 윤곽선

2019. 12. 18.

대표함수

Cv2.CvtColor 색공간 변환 [프로그래밍/C# OpenCV] - C# OpenCV 5-1. 색공간 변환

Cv2.Threshold 이미지 이진화 [프로그래밍/C# OpenCV] - C# OpenCV 4-2. Binary

blobs.Label 라벨링 진행 [프로그래밍/C# OpenCV] - C# OpenCV 7-8. Blob(1) 라벨링

CvContourChainCode.Render blobContour 출력

 

Example Code


using System;
using System.Windows.Forms;
using OpenCvSharp;
using OpenCvSharp.Blob;

namespace blobContour
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Mat src = new Mat("image.png");
            Mat bin = new Mat();
            Cv2.CvtColor(src, bin, ColorConversionCodes.BGR2GRAY);
            Cv2.Threshold(bin, bin, 0, 255, ThresholdTypes.Otsu);
            Cv2.ImShow("src", src);

            Mat result = new Mat(src.Size(), MatType.CV_8UC3);
            CvBlobs blobs = new CvBlobs();
            blobs.Label(bin);

            foreach(var item in blobs)
            {
                CvBlob blob = item.Value;

                CvContourChainCode chainCode = blob.Contour;
                chainCode.Render(result);
            }

            Cv2.ImShow("result", result);

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

 

Explain Code


	    using OpenCvSharp.Blob;
        

blob 사용하기 위해 using문 추가

 


	    Mat src = new Mat("image.png");
            Mat bin = new Mat();
            Cv2.CvtColor(src, bin, ColorConversionCodes.BGR2GRAY);
            Cv2.Threshold(bin, bin, 0, 255, ThresholdTypes.Otsu);
            Cv2.ImShow("src", src);
            

필요한 요소 선언, 초기화

이미지 이진화

 

	    Mat result = new Mat(src.Size(), MatType.CV_8UC3);
            CvBlobs blobs = new CvBlobs();
            blobs.Label(bin);
            

blob 필요한 요소 선언

blob 라벨링 진행

 


	    foreach(var item in blobs)
            {
                CvBlob blob = item.Value;

                CvContourChainCode chainCode = blob.Contour;
                chainCode.Render(result);
            }
            

반복문을 통해 blobContour 출력

 

blobContour 는 CvContourChainCode 형식

 

chainCode.Render(img)

      img 출력할 이미지

 

결과