3채널 영상을 1채널 영상으로 분리하여 영상 출력예제



c++)

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
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *image = NULL;
    
    //cvLoadImage(파일이름 , 이미지색상) : 메모리상에 로드
    image = cvLoadImage("D:/study/colorimage.png"-1);    //iscolor > 0 : 3채널 컬러 , 0 : 흑백 , < 0 : 원래영상
 
    //cvCreateImage(영상크기 , 영상의 깊이 , 픽셀당 채널수) : 영상 생성
    IplImage *RColor = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
    IplImage *GColor = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
    IplImage *BColor = cvCreateImage(cvGetSize(image), IPL_DEPTH_8U, 1);
 
    //cvSplit(다채널영상 , 단일채널영상1, 단일채널영상3, 단일채널영상3, 단일채널영상4) : 다채널 영상을 단일 채널영상으로 분리
    cvSplit(image, BColor, GColor, RColor, 0);
    
 
    //윈도우 생성
    cvNamedWindow("Image", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("RColor", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("GColor", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("BColor", CV_WINDOW_AUTOSIZE);
 
    //cvShowImage(윈도우이름, 출력영상) : 윈도우에 영상 출력
    cvShowImage("Image", image);
    cvShowImage("RColor", RColor);
    cvShowImage("GColor", GColor);
    cvShowImage("BColor", BColor);
 
 
    cvWaitKey(0);    //키입력 기다림
 
 
    //cvReleaseImage(영상포인터의 주소) : 메모리상에서 내림
    cvReleaseImage(&image);
    cvReleaseImage(&RColor);
    cvReleaseImage(&GColor);
    cvReleaseImage(&BColor);
}
cs



결과

컬러영상이 각각 R, G, B 1채널 영상으로 분리되었다



+ Recent posts