OpenCV

영상 RGB추출

김연호님 2016. 7. 30. 19:46

#include <cv.h> 

#include <cxcore.h> 

#include <highgui.h> 

#include <stdio.h>

#include "opencv/cv.h"

#include "opencv/highgui.h"

#include <iostream>


using namespace std;

using namespace cv;


void main()

{

IplImage *rb[2];

IplImage *img = cvLoadImage("sp.jpg");

IplImage *brightness = cvCreateImage(cvGetSize(img), 8, 1);


//원본영상출력

cvNamedWindow("origin");

cvShowImage("origin", img);


//rb는Red, Blue 채널이들어가는배열이다.

for (int i = 0; i<2; i++)

rb[i] = cvCreateImage(cvGetSize(img), 8, 1);


//RGB 모델을YCbCr모델로바꾼다

cvCvtColor(img, img, CV_BGR2YCrCb);


//YCbCr모델에서밝기, 빨강, 파랑순으로채널을나눈다

cvCvtPixToPlane(img, brightness, rb[0], rb[1], NULL);


//빨강과파랑채널에서값이큰것(색이진한것)만뽑는다

cvMaxS(rb[0], 150, rb[0]);

cvMaxS(rb[1], 150, rb[1]);


//화면에출력한다

cvNamedWindow("Red");

cvNamedWindow("Blue");

cvShowImage("Red", rb[0]);

cvShowImage("Blue", rb[1]);


cvWaitKey(0);


//자원해제

cvReleaseImage(&rb[0]);

cvReleaseImage(&rb[1]);

cvReleaseImage(&brightness);

cvReleaseImage(&img);

}