opencv缩略图详解程序员

缩略图代码:

    #include "stdafx.h"   
    #include <opencv2/opencv.hpp>   
    using namespace std;   
    #pragma comment(linker, "/subsystem:/"windows/" /entry:/"mainCRTStartup/"")   
     
    int main()   
    {   
	 
                const char *SrcImageName = "001.jpg";   
		const char *DesImageName = "001缩放.jpg"; 
                const char *SrcWindowName = "原图"; 
		const char *DesWindowName = "缩放图"; 
		 
		double fScale = 0.5;  //缩小倍数 
		CvSize cvsize; 
 
		IplImage *SrcImage=cvLoadImage(SrcImageName,-1);  //获取原图 
		IplImage *DesImage=NULL;; 
		 
		cvsize.width=SrcImage->width * fScale;   //计算缩略图的长宽 
		cvsize.height=SrcImage->height * fScale; 
 
		DesImage=cvCreateImage(cvsize,SrcImage->depth,SrcImage->nChannels);  //创建新图 
		cvResize(SrcImage,DesImage,CV_INTER_AREA);   
 
		cvNamedWindow(SrcWindowName,CV_WINDOW_AUTOSIZE); 
		cvNamedWindow(DesWindowName,CV_WINDOW_AUTOSIZE); 
 
		cvShowImage(SrcWindowName,SrcImage); //显示原图和缩略图 
		cvShowImage(DesWindowName,DesImage); 
		cvWaitKey(); 
		cvDestroyWindow(SrcWindowName); 
		cvDestroyWindow(DesWindowName); 
		cvReleaseImage(&SrcImage); 
		cvReleaseImage(&DesImage); 
        return 0;   
    }   

主要函数介绍

1.1 cvResize

函数功能:图像大小变换

函数原型:

voidcvResize(

  const CvArr* src,

  CvArr* dst,

  intinterpolation=CV_INTER_LINEAR

);

函数说明:

第一个参数表示输入图像。

第二个参数表示输出图像。

第三个参数表示插值方法,可以有以下四种:

CV_INTER_NN最近邻插值,

CV_INTER_LINEAR双线性插值 (缺省使用)

CV_INTER_AREA使用象素关系重采样。当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法..

CV_INTER_CUBIC立方插值.

这个函数在功能上与Win32 API中的StretchBlt()函数类似。

 

1.2 cvCreateImage

函数功能:创建图像

函数原型:

IplImage* cvCreateImage(CvSize size, intdepth, intchannels);

函数说明:

第一个参数表示图像的大小。

第二个参数表示图像的深度,可以为IPL_DEPTH_8UIPL_DEPTH_16U等等。

第三个参数表示图像的通道数。

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/7250.html

(0)
上一篇 2021年7月17日
下一篇 2021年7月17日

相关推荐

发表回复

登录后才能评论