본문 바로가기

Computer Vision by OpenCV

OpenCV YUV형식의 이미지 분리 (Split YUV-formated image)

반응형
SMALL


YUV형식의 이미지를 채널별로 출력하기


YUV형식의 이미지는

3개의 채널, Y, U, V를 가지고 있지만

RGB와 달리 

Y채널에는 영상의 밝기,

U, V채널에는 색차정보를 가지고 있다.


아래는 YUV 영상과 이를 각 채널별로 나누어 출력한 것이다.


원본영상


Y채널 영상 (밝기에 대한 정보를 가지고 있다.)


U채널 영상


V채널 영상


소스코드


다음 프로그램은 YUV형식을 가진

이미지를 Y, U, V 채널요소별로 분리하여 출력한다.


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{

	if (argc != 2)
	{
		cout << " Provide image name to read" << endl;
		return -1;
	}

	Mat inputImg;
	Mat yuvImg;

	inputImg = imread(argv[1], CV_LOAD_IMAGE_COLOR);

	cvtColor(inputImg, yuvImg, CV_BGR2YUV);
	vector<Mat> yuv_images(3);
	split(yuvImg, yuv_images);

	namedWindow("Original", CV_WINDOW_AUTOSIZE);
	namedWindow("Y", CV_WINDOW_AUTOSIZE);
	namedWindow("U", CV_WINDOW_AUTOSIZE);
	namedWindow("V", CV_WINDOW_AUTOSIZE);

	moveWindow("Original", 100, 100);
	moveWindow("Y", 120, 120);
	moveWindow("U", 140, 140);
	moveWindow("V", 160, 160);

	imshow("Original", inputImg);
	imshow("Y", yuv_images[0]);
	imshow("U", yuv_images[1]);
	imshow("V", yuv_images[2]);

	waitKey(0);
	return 0;
}


반응형
LIST