IT/- 프로그래밍

OpenCV 이진영상 만들기 (cvThreshold 함수)

혁준7519 2017. 4. 14. 07:08

이진영상 만들기 (cvThreshold 함수)

이진영상 : 0, 255로만 이루어진 영상



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
42
43
44
45
46
47
48
49
50
51
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *resultImage64, *resultImage128, *resultImage172;
    double threshold1 = 64, threshold2 = 128, threshold3 = 172;    //임계값 : 기준이 되는 픽셀값
 
    IplImage *srcImage = cvLoadImage("D:/study/testimage.jpg"-1);
 
    //create image
    resultImage64 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
    resultImage128 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
    resultImage172 = cvCreateImage(cvGetSize(srcImage), IPL_DEPTH_8U, 3);
 
 
 
    //이진영상 생성
    //cvThreshold(원본 이미지, 결과 이미지, 임계값, 최대 명암값, 이진화 방식)
    cvThreshold(srcImage, resultImage64, threshold1, 255, CV_THRESH_BINARY);
    cvThreshold(srcImage, resultImage128, threshold2, 255, CV_THRESH_BINARY);
    cvThreshold(srcImage, resultImage172, threshold3, 255, CV_THRESH_BINARY);
    //이진화 방식
    //CV_THRESH_BINARY : 임계값초과 255, 임계값이하 0
    //CV_THRESH_BINARY_INV : 임계값초과 0, 임계값이하 255
    //CV_THRESH_TRUNC : 임계값초과-임계값, 임계값이하-원래픽셀값
    //CV_THRESH_TOZERO : 임계값초과-원래픽셀값, 임계값이하-0
    //CV_THRESH_TOZERO_INV : 임계값초과-0, 임계값이하-원래픽셀값
 
 
 
    //create window 
    cvNamedWindow("source", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("binary T=64", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("binary T=128", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("binary T=172", CV_WINDOW_AUTOSIZE);
    //show window
    cvShowImage("source", srcImage);
    cvShowImage("binary T=64", resultImage64);
    cvShowImage("binary T=128", resultImage128);
    cvShowImage("binary T=172", resultImage172);
 
    cvWaitKey(0);
 
    //release image
    cvReleaseImage(&srcImage);
    cvReleaseImage(&resultImage64);
    cvReleaseImage(&resultImage128);
    cvReleaseImage(&resultImage172);
}
 
cs



결과