C#/C# OpenCV/
C# OpenCV 6-4. 모폴로지 연산 - 닫기, 열기
2019. 12. 4.
대표함수
Cv2.MorphologyEx 모폴로지 연산 함수
Cv2.Erdoe 지난 강의 참고, [프로그래밍/C# OpenCV] - C# OpenCV 6-3. 모폴로지 연산 - 침식, 팽창
Cv2.Dilate 지난 강의 참고, [프로그래밍/C# OpenCV] - C# OpenCV 6-3. 모폴로지 연산 - 침식, 팽창
Example Code
using System;
using System.Windows.Forms;
using OpenCvSharp;
namespace morph2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Mat src = Cv2.ImRead("image.jpg");
Mat dst = new Mat();
Cv2.CvtColor(src, src, ColorConversionCodes.BGR2GRAY);
Cv2.Threshold(src, src, 0, 255, ThresholdTypes.Otsu);
Cv2.ImShow("src", src);
Mat element = Cv2.GetStructuringElement(MorphShapes.Ellipse, new Size(7, 7));
Cv2.MorphologyEx(src, dst, MorphTypes.Close, element, iterations: 1);
Cv2.ImShow("close", dst);
Cv2.Dilate(src, dst, element);
Cv2.Erode(dst, dst, element, iterations: 1);
Cv2.ImShow("dilate-erode", dst);
Cv2.MorphologyEx(src, dst, MorphTypes.Open, element, iterations: 1);
Cv2.ImShow("open", dst);
Cv2.Erode(src, dst, element);
Cv2.Dilate(dst, dst, element, iterations: 1);
Cv2.ImShow("erode-dilate", dst);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
}
}
Explain Code
Cv2.MorphologyEx(src, dst, MorphTypes.Close, element, iterations: 1);
Cv2.Dilate(src, dst, element);
Cv2.Erode(dst, dst, element, iterations: 1);
Cv2.MorphologyEx(src, dst, MorphTypes op, element, int iteration)
src 입력
dst 출력
MorphType op 시행할 연산 *Close=닫기연산
element 구조체
iteration 반복횟수, 안적을 시 default 1
※ 닫기연산 은 팽창연산 - 침식연산을 순서대로 해준것과 같음.
흰색 오브젝트 내의 검은점을 삭제하는데 사용
Cv2.MorphologyEx(src, dst, MorphTypes.Open, element, iterations: 1);
Cv2.Erode(src, dst, element);
Cv2.Dilate(dst, dst, element, iterations: 1);
Cv2.MorphologyEx(src, dst, MorphTypes op, element, int iteration)
src 입력
dst 출력
MorphType op 시행할 연산 *Open=열기연산
element 구조체
iteration 반복횟수, 안적을 시 default 1
※ 열기연산 은 침식연산 - 팽창연산을 순서대로 해준것과 같음.
작은 흰색 노이즈를 제거하는데 사용
결과
※ 닫기 연산과 팽창-침식 연산이 결과가 같고
열기 연산과 침식-팽창 연산이 결과가 같은것을 볼 수있다