OpenCV/第5章 图像尺寸调整

//time: 2010-10-11

//author: rorger

 

 

OpenCV提供了cvResize函数进行图像调整,像许多函数一样,它支持ROI(感兴趣的区域)

本例测试了cvResize的四种不同方式,以及两种不同的ROI(针对原图和针对目标图像)

对于ROI的使用还不是非常深入,日后慢慢研究:主要就是定义一个矩形框吧

附上代码:(不好意思,代码注释少了些,不过我想这个还算简单 ) 

首先建立四张不同的resize方式的图片

然后建立两张针对不同的roi的图片

 

 

#include <cv.h> #include <highgui.h> #include <stdlib.h> #include <stdio.h> int main( int argc, char** argv ){ IplImage * src = cvLoadImage(argv[1]); CvSize size; double scale = 0.5; size.width = src->width*scale; size.height = src->height*scale; IplImage * dest_nn = cvCreateImage(size,src->depth,src->nChannels); IplImage * dest_linear = cvCreateImage(size, src->depth,src->nChannels); IplImage * dest_area = cvCreateImage(size,src->depth,src->nChannels) ; IplImage * dest_cubic=cvCreateImage(size,src->depth,src->nChannels) ; IplImage * srcroi = cvCreateImage(cvGetSize(src), src->depth, src->nChannels); IplImage * dest_srcroi = cvCreateImage(size, src->depth, src->nChannels); IplImage * destroi = cvCreateImage(cvGetSize(src), src->depth, src->nChannels); IplImage * dest_destroi = cvCreateImage(size, src->depth, src->nChannels); cvCopyImage(src,srcroi); cvCopyImage(src,destroi); cvSetImageROI(srcroi, cvRect(0,0, srcroi->width / 2 , srcroi->height )); cvSetImageROI(dest_destroi, cvRect(0,0, dest_destroi->width / 2 , srcroi->height )); cvResize(src,dest_nn,CV_INTER_NN); cvResize(src,dest_linear,CV_INTER_LINEAR); cvResize(src,dest_area,CV_INTER_AREA); cvResize(src,dest_cubic,CV_INTER_CUBIC); cvResize(srcroi,dest_srcroi, CV_INTER_CUBIC); cvResize(destroi,dest_destroi, CV_INTER_CUBIC); char windowsrc[]="src"; cvNamedWindow(windowsrc,CV_WINDOW_AUTOSIZE); char window_dest_nn[]="nn"; char window_dst_linear[] = "linear"; char window_dst_area[] = "area"; char window_dst_cubic[] = "cubic"; char window_dst_srcroi[] = "srcroi"; char window_dst_destroi[] = "destroi"; cvNamedWindow(window_dest_nn,CV_WINDOW_AUTOSIZE); cvNamedWindow(window_dst_linear,CV_WINDOW_AUTOSIZE); cvNamedWindow(window_dst_area,CV_WINDOW_AUTOSIZE); cvNamedWindow(window_dst_cubic,CV_WINDOW_AUTOSIZE); cvNamedWindow(window_dst_srcroi,CV_WINDOW_AUTOSIZE); cvNamedWindow(window_dst_destroi,CV_WINDOW_AUTOSIZE); cvShowImage(windowsrc,src); cvShowImage(window_dest_nn,dest_nn); cvShowImage(window_dst_linear,dest_linear); cvShowImage(window_dst_area,dest_area); cvShowImage(window_dst_cubic,dest_cubic); cvShowImage(window_dst_srcroi,dest_srcroi); cvShowImage(window_dst_destroi,dest_destroi); cvWaitKey(0); cvReleaseImage(&src); cvReleaseImage(&dest_nn); cvReleaseImage(&dest_linear); cvReleaseImage(&dest_area); cvReleaseImage(&dest_cubic); cvReleaseImage(&srcroi); cvReleaseImage(&dest_srcroi); cvReleaseImage(&dest_destroi); cvReleaseImage(&destroi); cvDestroyAllWindows(); return 0; }


 

 

运行结果:

OpenCV/第5章 图像尺寸调整_第1张图片

 

 

OpenCV/第5章 图像尺寸调整_第2张图片

你可能感兴趣的:(测试,DST,2010)