精华内容
下载资源
问答
  • opencv resize函数

    千次阅读 2016-11-23 10:43:01
    resize函数可以缩放任意通道的图像

    resize函数可以缩放任意通道的图像

    展开全文
  • OpenCV 插值方式选用

    OpenCV 支持插值方式如下:

    符号说明
    CV_INTER_NN0最近邻插值
    CV_INTER_LINEAR1双线性插值
    CV_INTER_CUBIC2双三次插值
    CV_INTER_AREA3区域插值
    CV_INTER_LANCZOS44兰索斯插值

    在 imgproc.hpp 和 core.hpp 中有说明:

    To shrink an image, it will generally look best with #INTER_AREA interpolation, whereas to enlarge an image, it will generally look best with #INTER_CUBIC (slow) or #INTER_LINEAR (faster but still looks OK).

    意思是

    • 如果要缩小图像
      - #INTER_AREA 效果最佳
    • 如果要放大图像
      - #INTER_CUBIC 效果最佳但较慢
      - #INTER_LINEAR 速度快一些效果也还行
    展开全文
  • OpenCV resize函数改变图像的大小

    千次阅读 2017-10-20 19:50:11
    OpenCV提供了resize函数来改变图像的大小,函数原型如下: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR ); 先解释一下

    简介

    前面介绍了使用Python可将图片resize为H=400,W=600,代码。
    OpenCV提供了resize函数来改变图像的大小,函数原型如下:

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

    先解释一下各个参数的意思:

    src:输入,原图像,即待改变大小的图像;
    dst:输出,改变大小之后的图像,这个图像和原图像具有相同的内容,只是大小和原图像不一样而已;
    dsize:输出图像的大小。如果这个参数不为0,那么就代表将原图像缩放到这个Size(width,height)指定的大小;如果这个参数为0,那么原图像缩放之后的大小就要通过下面的公式来计算:

    dsize = Size(round(fx*src.cols), round(fy*src.rows))

    其中,fx和fy就是下面要说的两个参数,是图像width方向和height方向的缩放比例。
    fx:width方向的缩放比例,如果它是0,那么它就会按照(double)dsize.width/src.cols来计算;
    fy:height方向的缩放比例,如果它是0,那么它就会按照(double)dsize.height/src.rows来计算;
    interpolation:这个是指定插值的方式,图像缩放之后,肯定像素要进行重新计算的,就靠这个参数来指定重新计算像素的方式,有以下几种:

        INTER_NEAREST - 最邻近插值
        INTER_LINEAR - 双线性插值,如果最后一个参数你不指定,默认使用这种方法
        INTER_AREA - resampling using pixel area relation. It may be a preferred method for image decimation, as it gives moire’-free results. But when the image is zoomed, it is similar to the INTER_NEAREST method.
        INTER_CUBIC - 4x4像素邻域内的双立方插值
        INTER_LANCZOS4 - 8x8像素邻域内的Lanczos插值
    

    使用注意事项:
    1. dsize和fx/fy不能同时为0,要么你就指定好dsize的值,让fx和fy空置直接使用默认值,就像
    resize(img, imgDst, Size(30,30));
    要么你就让dsize为0,指定好fx和fy的值,比如fx=fy=0.5,那么就相当于把原图两个方向缩小一倍!

    1. 至于最后的插值方法,正常情况下使用默认的双线性插值就够用了。
      几种常用方法的效率是:最邻近插值>双线性插值>双立方插值>Lanczos插值;
      但是效率和效果成反比,所以根据自己的情况酌情使用。

    2. 正常情况下,在使用之前dst图像的大小和类型都是不知道的,类型从src图像继承而来,大小也是从原图像根据参数计算出来。但是如果你事先已经指定好dst图像的大小,那么你可以通过下面这种方式来调用函数:

      resize(src, dst, dst.size(), 0, 0, interpolation);

    代码

     // Demon.cpp : 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <opencv2\opencv.hpp>
    #include <windows.h> 
    #include<vector>
    #include<string>  
    #include<iostream>
    
    using namespace std;
    using namespace cv;
    
    
    int _tmain(int argc, _TCHAR* argv[])
    {
        string dir_path = "F:\\BaiduYunDownload\\ImagesJpg\\Cam-3\\0\\";
        char outDirName[50];
        Directory dir;
        string extenttype = "*.jpg";
        vector<string> fileNames = dir.GetListFiles(dir_path, extenttype, false);
    
        for (int item = 0; item < fileNames.size(); item++)
        {
            //get image name  
            string fileName = fileNames[item];
            string fileFullName = dir_path + fileName;
            //cout << "File name:" << fileName << endl;
            cout << "Full path:" << fileFullName << endl;
    
            Mat img = cv::imread(fileFullName);
    
            /*Mat grayImg;
            cvtColor(img, grayImg, CV_BGR2GRAY);
            cv::imshow("gray", grayImg);
            cv::waitKey();*/
    
            sprintf_s(outDirName, "F:\\BaiduYunDownload\\InitialImages\\0\\%06d.jpg", item);
    
    
            Mat resizeImg;
            resize(img, resizeImg,Size(320, 280));
            /*imshow("resizeImg", resizeImg);
            waitKey(500);*/
    
    
    
            imwrite(outDirName, resizeImg);
        }
    
        return 0;
    
    }
    
    
    

    这里写图片描述

    这里写图片描述

    参考

    OpenCV学习笔记:resize函数改变图像的大小 - 邓无邪的博客 - CSDN博客
    http://blog.csdn.net/woainishifu/article/details/53260546

    展开全文
  • 相信大家应该经常会用到OpenCV中的函数resize(),当我们想放大或者缩小图像的时候,会用到这个函数进行图像缩放,其中最核心的便是对图像的像素进行插值处理。 这里的插值interpolation,共有五种方式: 1)INTER_...

    相信大家应该经常会用到OpenCV中的函数resize(),当我们想放大或者缩小图像的时候,会用到这个函数进行图像缩放,其中最核心的便是对图像的像素进行插值处理。

    这里的插值interpolation,共有五种方式:
    1)INTER_NEAREST - 最近邻插值法
    2)INTER_LINEAR - 双线性插值法(默认)
    3)INTER_AREA - 基于局部像素的重采样(resampling using pixel area relation)。对于图像抽取(image decimation)来说,这可能是一个更好的方法。但如果是放大图像时,它和最近邻法的效果类似。
    4)INTER_CUBIC - 基于4x4像素邻域的3次插值法
    5)INTER_LANCZOS4 - 基于8x8像素邻域的Lanczos插值

    今天重点和大家聊一聊默认的双线性插值方式的函数源码,OpenCV是如何实现加速计算的?(源码我已经抠出,并打包在zip文件中,大家编译即可成功运行demo)

    对于双线性插值,之前的一个帖子中,我也总结过,可参考:https://t.zsxq.com/2VFYvVn

    这里,重点给大家分享一个加速方法——化float为整数计算

    我们看到resize的源码中,有段代码:
    for (k = 0; k < ksize; k++)
    ialpha[dxcnksize + k] = saturate_cast(cbuf[k] * INTER_RESIZE_COEF_S

    展开全文
  • Python opencv resize函数使用

    千次阅读 2019-03-23 12:26:07
    def resize(src, dsize, dst=None, fx=None, fy=None, interpolation=None): # real signature unknown; restored from __doc__ """ resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) -> dst ...
  • opencvresize默认INTER_LINEAR(bilinear) 就算用了同一种方法,结果还是不一致, 原因在于 MATLAB 的imresize函数默认是开启了anti-aliasing,将其关闭,结果就跟 C++ 一样了: imresize(img1, [H,W],'Anti...
  • 为何 MATLAB imresize 函数OpenCV resize 函数结果不同?今年 4 月,我在依照 MATLAB 代码自己写一个卷积神经网络 C++ 实现的过程中,就发现了这个问题,不过那时问题不是太大,所以也没有给出太多关注。今天在 ...
  • opencvresize函数

    2021-09-03 15:00:25
    opencv中的resize函数有多种用法: 1,图像缩放 opencv帮助文档中对resize函数的介绍: src 输入图 dst 输出图,形态和输入图相同,当dsize不等于0,输出图尺寸会和dsize相同,当dsize等于0,输出图尺寸会由输入图...
  • OpenCVresize函数五种插值算法的实现过程

    万次阅读 多人点赞 2013-12-15 17:21:18
    最新版OpenCV2.4.7中,cv::resize函数有五种插值算法:最近邻、双线性、双三次、基于像素区域关系、兰索斯插值。下面用for循环代替cv::resize函数来说明其详细的插值实现过程,其中部分代码摘自于cv::resize函数中的...
  • OpenCVresize函数

    千次阅读 2019-05-08 00:08:40
    OpenCV提供了resize函数来改变图像的大小,函数原型如下: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR ); 先解释一下各个参数的意思...
  • OpenCV-resize函数

    千次阅读 2019-01-10 15:09:44
    OpenCV提供了resize函数来改变图像的大小,函数原型如下: /************************************************************************/ /* OpenCV图像缩放使用的函数是:resize void resize(InputArray src, ...
  • opencvresize函数

    2021-06-09 22:20:23
    一、Opencv官方文档中resize的描述: resize Resizes an image. C++: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR ) Python: cv2.resize...
  • OpenCVresize函数优化

    千次阅读 2019-08-30 11:37:48
    在使用OpenCV做图像处理的时候,最常见的问题是c++版本性能不足,以resize函数为例来说明,将size为[864,1323,3]的函数缩小一半: Mat img0; gettimeofday(&t4, NULL); cv::resize(source, img0, cv::Size...
  • OpenCVresize函数五种插值算法的实现过程.pdf
  • OpenCV中用resize函数实现图像的缩放,下面介绍这个函数!resize函数原型如下: C++: void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )...
  • opencv resize()函数

    万次阅读 2018-06-14 10:25:58
    void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR) 参数说明: src - 原图 dst - 目标图像。当参数dsize不为0时,dst的大小为size;否则,...
  • Qt5.7OpenCV249resize函数

    2017-01-12 22:41:12
    相关文章请在csdn的博客 It1995 查询
  • OpenCV3.4.1resize函数未定义

    千次阅读 2018-08-31 13:55:19
    添加#include <opencv2/imgproc/imgproc.hpp> 就ok了

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,561
精华内容 5,824
关键字:

opencvresize函数