[转]图像resize

OpenCV(3)-图像resize

转载地址:http://www.cnblogs.com/korbin/p/5612427.html

在图像处理过程中,有时需要把图像调整到同样大小,便于处理,这时需要用到图像resize()

原函数
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )
前两个参数分别为输入和输出图像。dsize表示输出图像的大小,如果为0,则

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

dsize和fx、fy不能同时为0。fx、fy是沿x轴和y轴的缩放系数;默认取0时,计算如下

fx=(double)dsize.width/src.colsfx=(double)dsize.width/src.cols

fy=(double)dsize.height/src.rowsfy=(double)dsize.height/src.rows

最优一个参数interpolation表示插值方式,有以下几种:
INTER_NEAREST - 最近邻插值
INTER_LINEAR - 线性插值(默认)
INTER_AREA - 区域插值
INTER_CUBIC - 三次样条插值
INTER_LANCZOS4 - Lanczos插值

INTER_NEAREST最近邻插值

目标如下的像素点为对应的最近的原图像的像素点。假设原图像大小为(s_height, s_width),目标图像大小为(d_height, d_width),那么高度和宽度的缩放比例为h_ratio = s_height/d_height,w_ratio=s_width/d_width。

对面目标图像像素:(x, y)其值等于原图像(x * w_ration, y * h_ration)处的值。

INTER_LINEAR 线性插值

默认使用。在使用最近邻插值时,得到的坐标未必是一个整数,例如
(xw_ration, yh_ration)=(10.5, 20.5),那么可能取得坐标点就有四种(10, 20)、(11, 20)、(10, 21)、(11, 21)。双线性插值,会把这四个坐标的像素值加权求和。
D(x, y) = S(j, k) * w1 + S(j+1, k) w2 + S(j+1,k+1) w3 + S(j, K+1) * w4,其中w为权值。权值大小和计算位置的小数部分有关。

CV_INTER_AREA:区域插值

区域插值分为3种情况。图像放大时类似于线性插值,图像缩小时可以避免波纹出现。

INTER_CUBIC 三次样条插值

使用4x4邻域内的像素双3次插值。

INTER_LANCZOS4 Lanczos插值

使用8×8像素邻域的Lanczos插值

举例

#include <string>

#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main(int argc, char* argv[]){
    std::string path = "";
    int resize_height = 256;
    int resize_width = 256;
    cv::Mat src = cv::imread(path);
    cv::Mat dst;
    imshow("src", src);
    cv::resize(src, dst, cv::Size(resize_width, resize_height), (0, 0), (0, 0), cv::INTER_LINEAR);
    imshow("dst", dst);

    cv::waitKey(0);
    return 0;
}

参考官网

时间: 2024-10-05 05:05:59

[转]图像resize的相关文章

Python图像resize前后颜色不一致问题

今天帮师姐解决一个bug,测试了Python图像resize前后颜色不一致问题. 代码片段执行的功能:图像指定倍数超分辨率,输入为[0-1] float型数据,输出为格式不限的图像 bug:输入图像与输出图像颜色不一致 一.把产生bug的功能片段做分离测试: 1 import h5py 2 import numpy as np 3 import matplotlib.pyplot as plt 4 from PIL import Image 5 from scipy import misc 6

列举一些算法对照片、图像进行相似度对比分析比较

首先: 图片如下                                                    18.jpg                                                                                    19.jpg                                                    20.jpg                                   

CAFFE学习笔记(四)将自己的jpg数据转成lmdb格式

1 引言 1-1 以example_mnist为例,如何加载属于自己的测试集? 首先抛出一个问题:在example_mnist这个例子中,测试集是人家给好了的.那么如果我们想自己试着手写几个数字然后验证识别效果又当如何呢? 观察CAFFE_ROOT/examples/mnist/下的lenet_train_test.prototxt文件,发现里面既给出了训练集的路径,又给出了测试集的路径.因此答案很显然了,我们可以把自己的测试集做成leveldb(或lmdb)格式的,然后在lenet_train

全景视频拼接(二)--OpenCV源码解析

本文参考:http://blog.csdn.net/skeeee/article/details/19480693,做了一定修改和补充. 一.stitching_detail程序运行流程 1.命令行调用程序,输入源图像以及程序的参数 2.特征点检测,判断是使用surf还是orb,默认是surf. 3.对图像的特征点进行匹配,使用最近邻和次近邻方法,将两个最优的匹配的置信度保存下来. 4.对图像进行排序以及将置信度高的图像保存到同一个集合中,删除置信度比较低的图像间的匹配,得到能正确匹配的图像序列

caffe 每层结构

如何在Caffe中配置每一个层的结构 最近刚在电脑上装好Caffe,由于神经网络中有不同的层结构,不同类型的层又有不同的参数,所有就根据Caffe官网的说明文档做了一个简单的总结. 1. Vision Layers 1.1 卷积层(Convolution) 类型:CONVOLUTION 例子 layers { name: "conv1" type: CONVOLUTION bottom: "data" top: "conv1" blobs_lr:

常用bash命令

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545 } p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "Helvetica Neue"; color: #454545; min-height: 14.0px } p.p3 { margin: 0.0px 0.0px 0.0px 0.0px;

YOLO end-to-end

1.YOLO: You Only Look Once:Unified, Real-Time Object Detection YOLO是一个可以一次性预测多个Box位置和类别的卷积神经网络,能够实现端到端的目标检测和识别,其最大的优势就是速度快.事实上,目标检测的本质就是回归,因此一个实现回归功能的CNN并不需要复杂的设计过程.YOLO没有选择滑窗或提取proposal的方式训练网络,而是直接选用整图训练模型.这样做的好处在于可以更好的区分目标和背景区域,相比之下,采用proposal训练方式的

caffe读取多标签的lmdb数据

问题描述: lmdb文件支持数据+标签的形式,但是却只能写入一个标签,引入多标签的解决方法有很多,这儿详细说一下我的办法:制作多个data数据,分别加入一个标签.我的方法只适用于标签数量较少的情况,标签数量比较多的话建议修改源码支持.下面介绍详细步骤.以下均以两个标签作为介绍. 生成两个含单标签的list: img1 0 img2 0 img3 1 img4 1 img1 10 img2 11 img3 10 img4 11 按照同一顺序做shuffle处理,caffe训练数据shuffle处理

opencv视频跟踪2

在前面的报告中我们实现了用SURF算法计算目标在移动摄像机拍摄到的视频中的位置.由于摄像机本身像素的限制,加之算法处理时间会随着图像质量的提高而提高,实际实验发现在背景复杂的情况下,结果偏差可能会很大. 本次改进是预备在原先检测到的特征点上加上某种限制条件,以提高准确率. 问题:如何判定检测到的特征点是否是我们需要的点(也就是目标区域上的点)? 可行方案:用形态学找出目标的大致区域,然后对特征点判定. 特征点(SURF算法或者其他的算法)已有,我们来一步步实现找到目标大致区域. 下图假设为视频中