C#/C# OpenCV/
C# OpenCV 5-2. 채널 분리 & 병합
2019. 11. 19.
대표함수
Cv2.Split 이미지의 각채널을 분리
Cv2.Merge 분리되어있는 채널을 하나로 병합
Example Code
using System;
using System.Windows.Forms;
using OpenCvSharp;
namespace SMtest
{
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();
Mat[] mv = new Mat[3];
Cv2.Split(src, out mv);
//mv = Cv2.Split(src); 이렇게도 가능
Cv2.ImShow("src", src);
Cv2.ImShow("src-B", mv[0]);
Cv2.ImShow("src-G", mv[1]);
Cv2.ImShow("src-R", mv[2]);
mv[2] = Mat.Zeros(mv[2].Size(), MatType.CV_8UC1);
Cv2.Merge(mv, dst);
Cv2.ImShow("dst", dst);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
}
}
Explain Code
Cv2.Split(src, out mv);
Cv2.Split(src, out Mat[] mv)
src 입력
Mat[] mv 분리될 채널만큼의 1차원 배열 Mat
ex) 3채널 이미지의 경우 Mat[] mv = new Mat[3]
out 1차원 배열 Mat 앞에 꼭! 붙여줘야함
mv[2] = Mat.Zeros(mv[2].Size(), MatType.CV_8UC1);
R채널 이미지를 제로이미지로 변경
Cv2.Merge(mv, dst);
Cv2.Merge(Mat[] mv, dst)
Mat[] mv 병합 할 채널들의 배열
dst 출력
결과