본문 바로가기
배워보자!!/Opencv

[Opencv] IplImage 이미지 이진화

by norinda 2018. 11. 26.
728x90

이미지를 하나 로드해서

특정 밝기값( 0 ~ 255) 을 정해서

그값을 기준으로 흰,백으로 이미지를 바꿔보겠다.


도포 검사할때 유용하게 사용.


-thresholdNum 값을 1~255값을 바꿔가면서 사용하면됨.

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
    CString FilePath = "";
    CString LoadWindowName = "threshold";
    CString BINARYWindowName = "BINARY";
    int thresholdNum = 100;
    IplImage *loadIplImage;
    IplImage *output;
    IplImage *gray;
    loadIplImage = cvLoadImage("./image/hand.jpg");
 
    
    cvNamedWindow(LoadWindowName,0);        //영상을 표시할 윈도우를 생성(0/1)
    cvNamedWindow(BINARYWindowName,0);        //영상을 표시할 윈도우를 생성(0/1)
    gray = cvCreateImage( cvGetSize(loadIplImage), IPL_DEPTH_8U, 1); // 흑백 이미지 생성
    output = cvCreateImage( cvGetSize(loadIplImage), IPL_DEPTH_8U, 1); // 흑백 이미지 생성
 
    cvCvtColor(loadIplImage , gray , CV_RGB2GRAY);//컬러를 흑백으로 변환
    cvThreshold(gray, output, thresholdNum, 255, CV_THRESH_BINARY); //thresholdNum값을 기준으로 이진화
    cvShowImage(BINARYWindowName , output);
    cvShowImage(LoadWindowName,loadIplImage);    //윈도우에 출력
    cvWaitKey(0);                        //프로그램의 동작을 잠시 멈추고 사용자로부터 키 입력을 기다린다.
 
    cvReleaseImage(&loadIplImage);        //할당된 메모리 공간을 해제한다.
    cvReleaseImage(&output);        //할당된 메모리 공간을 해제한다.
    cvReleaseImage(&gray);        //할당된 메모리 공간을 해제한다.
    cvDestroyWindow(LoadWindowName);        //윈도우를 닫고, 윈도우를 위해 동적할당된 메모리 공간을 모두 해제한다. 
    cvDestroyWindow(BINARYWindowName);        //윈도우를 닫고, 윈도우를 위해 동적할당된 메모리 공간을 모두 해제한다. 
cs


반응형

댓글