이미지 확대하기



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
#include <opencv/cv.h>
#include <opencv/highgui.h>
 
 
void main() {
    IplImage *srcImage = cvLoadImage("D:/study/testimage2.jpg"-1);
    //이미지를 4배 확대
    IplImage *rstImage1 = cvCreateImage(cvSize(srcImage->width * 2, srcImage->height * 2), srcImage->depth, srcImage->nChannels);
    IplImage *rstImage2 = cvCreateImage(cvSize(srcImage->width * 2, srcImage->height * 2), srcImage->depth, srcImage->nChannels);
    IplImage *rstImage3 = cvCreateImage(cvSize(srcImage->width * 2, srcImage->height * 2), srcImage->depth, srcImage->nChannels);
    IplImage *rstImage4 = cvCreateImage(cvSize(srcImage->width * 2, srcImage->height * 2), srcImage->depth, srcImage->nChannels);
 
 
    //cvResize(원본이미지, 결과이미지, 보간법) : 이미지의 크기를 조절
    /*
        보간법 : 이미지 확대시 빈픽셀에 적당한 데이터값을 할당하는 방법
        CV_INTER_NN : 최근접 이웃 보간법 - 원본의 가장 가까운 픽셀값으로 할당
        CV_INTER_LINEAR : 양선형 보간법 - 주위 4개의 픽셀값을 이용
        CV_INTER_CUBIC : 큐빅 보간법 - 주위 16개의 픽셀값을 이용
        CV_INTER_AREA : 제본표 보간법 - 짝수인 픽셀만 이용
    */
    cvResize(srcImage, rstImage1, CV_INTER_NN);
    cvResize(srcImage, rstImage2, CV_INTER_LINEAR);
    cvResize(srcImage, rstImage3, CV_INTER_CUBIC);
    cvResize(srcImage, rstImage4, CV_INTER_AREA);
 
 
    cvNamedWindow("original", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("CV_INTER_NN", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("CV_INTER_LINEAR", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("CV_INTER_CUBIC", CV_WINDOW_AUTOSIZE);
    cvNamedWindow("CV_INTER_AREA", CV_WINDOW_AUTOSIZE);
 
    cvShowImage("original", srcImage);
    cvShowImage("CV_INTER_NN", rstImage1);
    cvShowImage("CV_INTER_LINEAR", rstImage2);
    cvShowImage("CV_INTER_CUBIC", rstImage3);
    cvShowImage("CV_INTER_AREA", rstImage4);
 
    cvWaitKey(0);
 
    cvReleaseImage(&srcImage);
    cvReleaseImage(&rstImage1);
    cvReleaseImage(&rstImage2);
    cvReleaseImage(&rstImage3);
    cvReleaseImage(&rstImage4);
}
cs



결과



+ Recent posts