C#/C# OpenCV/
C# OpenCV 7-6. Contour(6) Convex Hull
2019. 12. 13.
대표함수
Cv2.CvtColor 색공간 변환 [프로그래밍/C# OpenCV] - C# OpenCV 5-1. 색공간 변환
Cv2.Threshold 이미지 이진화 [프로그래밍/C# OpenCV] - C# OpenCV 4-2. Binary
Cv2.FindContour contour 찾기 [프로그래밍/C# OpenCV] - C# OpenCV 7-1. Contour(1) 윤곽선 찾기
Cv2.DrawContour contour 그리기 [프로그래밍/C# OpenCV] - C# OpenCV 7-1. Contour(1) 윤곽선 찾기
Cv2.ConvexHull contour에서 Convex Hull 찾기
Example Code
using System;
using System.Windows.Forms;
using OpenCvSharp;
namespace findContour6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Mat src = Cv2.ImRead("image.png");
Mat result = new Mat();
Mat bin = new Mat();
src.CopyTo(result);
Cv2.CvtColor(src, bin, ColorConversionCodes.BGR2GRAY);
Cv2.Threshold(bin, bin, 0, 255, ThresholdTypes.Otsu);
Cv2.ImShow("src", src);
Cv2.FindContours(bin, out Point[][] contour, out HierarchyIndex[] hierarchy,
RetrievalModes.Tree, ContourApproximationModes.ApproxSimple);
Cv2.DrawContours(result, contour, 0, Scalar.Yellow, 2, LineTypes.AntiAlias, hierarchy);
Point[][] hull = new Point[contour.Length][];
hull[0] = Cv2.ConvexHull(contour[0]);
Cv2.DrawContours(result, hull, 0, Scalar.Red, 2, LineTypes.AntiAlias);
Cv2.ImShow("result", result);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
}
}
Explain Code
Mat src = Cv2.ImRead("image.png");
Mat result = new Mat();
Mat bin = new Mat();
src.CopyTo(result);
Cv2.CvtColor(src, bin, ColorConversionCodes.BGR2GRAY);
Cv2.Threshold(bin, bin, 0, 255, ThresholdTypes.Otsu);
Cv2.ImShow("src", src);
필요한 요소 선언, 초기화
이미지 이진화
Cv2.FindContours(bin, out Point[][] contour, out HierarchyIndex[] hierarchy,
RetrievalModes.Tree, ContourApproximationModes.ApproxSimple);
Cv2.DrawContours(result, contour, 0, Scalar.Yellow, 2, LineTypes.AntiAlias, hierarchy);
contour 찾기
contorur 그리기 - 노랑
Point[][] hull = new Point[contour.Length][];
hull[0] = Cv2.ConvexHull(contour[0]);
Cv2.DrawContours(result, hull, 0, Scalar.Red, 2, LineTypes.AntiAlias);
contour[0]의 Convex Hull 정보 반환
Cv2.ConvexHull(IEnumerable<Point> points)
points Convex Hull 정보를 구할 Point 배열
Cv2.DrawContour 이용 Convex Hull 그리기 - 빨강
결과