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 출력할 이미지
결과