OpenCV中使用cvResize函数或resize函数进行图象放缩

//cvResize函数原型void cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );

src:输入图像.(IplImage)

dst:输出图像.(IplImage)

interpolation:差值方法:

CV_INTER_NN - 最近邻差值

CV_INTER_LINEAR - 双线性差值 (缺省使用)

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

CV_INTER_CUBIC - 立方差值

函数cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定ROI,函数将按常规支持 ROI.

使用C++编程时使用resize函数进行图像缩放

//resize函原型CV_EXPORTS_W void resize( InputArray src, OutputArray dst,  
                              Size dsize, double fx=0, double fy=0,  
                              int interpolation=INTER_LINEAR );

注:dsize与(fx,fy)不能同时为0

示例程序:

使用ubuntu14.04+OpenCV 3.1.0

/**------------------------------------------------------------------**/
/**描述:包含程序所依赖的头文件**/
/**------------------------------------------------------------------**/
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <string>
/**------------------------------------------------------------------**/
/**描述:程序所用的命名空间**/
/**------------------------------------------------------------------**/
using namespace cv;
using namespace std;
/**------------------------------------------------------------------**/
/**描述:系统全局常量**/
/**------------------------------------------------------------------**/
//目标图片的文件名,需要放置在工程目录下
const string TagrImg = "Angelababy.jpeg";
//定义窗口标题
const char SrcWinNa[] = "SrcWindow";
const char GryWinNa[] = "GryWindow";
const char ResWinNa[] = "ResWindow";
/**------------------------------------------------------------------**/
/**描述:系统全局变量**/
/**------------------------------------------------------------------**/
//放缩倍数
double scale=0.4;

int main(int argc, char **argv)
{
    /**原图像的读取及显示-----------------------------------------------**/
    //读取图片
    Mat SrcImg = imread(TagrImg);
    //检查是否读取成功
    if(!SrcImg.data)
    {
        cout<<"读取失败,程序流产"<<endl;
        cout<<"请检查工程目录下是否存在"<<TagrImg<<endl;
        return -1;
    }
    //创建窗口显示原图像
    cvNamedWindow(SrcWinNa, CV_WINDOW_AUTOSIZE);
    imshow(SrcWinNa, SrcImg);

    /**图片缩放及显示--------------------------------------------------**/
    //设置缩放后的图片的尺寸
    Size ResImgSiz = Size(SrcImg.cols*scale, SrcImg.rows*scale);
    Mat ResImg = Mat(ResImgSiz, SrcImg.type());
    resize(SrcImg, ResImg, ResImgSiz, CV_INTER_CUBIC);
    //创建窗口用于显示缩放后的图像
    cvNamedWindow(ResWinNa, CV_WINDOW_AUTOSIZE);
    imshow(ResWinNa, ResImg);
    cvWaitKey(0);
    return 1;
}

将图片缩小到0.5倍的效果图:

OpenCV中使用cvResize函数或resize函数进行图象放缩

原文链接: https://www.cnblogs.com/tcysky/p/6215784.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/246360

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午1:28
下一篇 2023年2月14日 上午1:29

相关推荐