【OpenCV学习笔记】2.2图像的缩放
来源:互联网 发布:美国三维设计软件 编辑:程序博客网 时间:2024/05/01 21:28
图像的缩放,顾名思义就是图像的缩小和放大。
opencv1和opencv2最大的区别就是c++支持,这使得网上有些资料是opencv1的c语言写的,而有些人喜欢c++,当然接口函数也就不同了。
下面是一个c++的opencv2接口的图像缩放代码。
#include<opencv2/core/core.hpp>#include<opencv2/highgui/highgui.hpp>using namespace std;using namespace cv;int main(){ Mat img = imread("C:/Users/Red/Documents/Visual Studio 2013/Projects/StudyOpenCV/kv2.jpg",1); if (!img.data) { printf("Oh,no,读取img图片文件错误~! \n"); return -1; } namedWindow("【1】原画"); imshow("【1】原画", img); double scale =4; //Cv::Size结构表示矩形尺寸的结构,结构体中分别定义了矩形的宽度和高度。顾名思义这个是定义一个矩阵的宽度和高度的。而定义之后的宽带和高度直接用在cv::Mat中,用cv::Mat来创建一个固定大小的矩阵。代码中就是image2的矩阵了。 Size dsize = Size(img.cols*scale, img.rows*scale); Mat newimg = Mat(dsize,CV_32SC3); resize(img, newimg,dsize); Mat imgROI = newimg(Rect(800, 600, 600, 600)); namedWindow("【2】缩放"); imshow("【2】缩放", imgROI); waitKey(0); return 0;}
resize函数原型
void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_
LINEAR )
各个参数的意义比较直观:
- src 输入图像;
- dst 输出图像.;
- dsize 输出图像大小,目标大小可以是任意的大小,可以不保持长宽比率;
- fx和fy默认为0,但它们与dsize必须不能同时为零,也就是说要么dsize不为零而fx与fy同时可以为0,要么dsize为0而fx与fy不同时为0;
- interpolation 插值方法,默认为INTER_LINEAR(双线性插值),删除的像素或者新增的像素值通过interpolation控制;
检验interpolation插值方法
【参考】http://www.cnblogs.com/wangguchangqing/p/4039095.html
• CV_INTER_NN - 最近邻插值,
• CV_INTER_LINEAR - 双线性插值 (缺省使用)
• CV_INTER_AREA - 使用象素关系重采样。当图像放大时,类似于 CV_INTER_NN 方法的效果;当图像缩小时候,该方法可以避免波纹出现。
• CV_INTER_CUBIC - 立方插值.
原图如下
1、CV_INTER_NN - 最近邻插值
也被称为零阶插值法,最简单插值算法,当然效果也是最差的。它的思想相当简单,就是四舍五入,浮点坐标的像素值等于距离该点最近的输入图像的像素值。 速度相当快。但是这种邻近取值的方法是很粗糙的,会造成图像的马赛克、锯齿等现象。
2、CV_INTER_LINEAR - 双线性插值
双线性插值的主要思想是计算出浮点坐标像素近似值。一个浮点坐标必定会被四个整数坐标所包围,将这个四个整数坐标的像素值按照一定的比例混合就可以求出浮点坐标的像素值。混合比例为距离浮点坐标的距离。
计算每个像素像素值需要进行6次浮点运算。而且,由于浮点坐标有4个坐标近似求得,如果这个四个坐标的像素值差别较大,插值后,会使得图像在颜色分界较为明显的地方变得比较模糊。
3、CV_INTER_AREA - 使用象素关系重采样的结果
4、CV_INTER_CUBIC - 立方插值的结果
- 【OpenCV学习笔记】2.2图像的缩放
- OpenCV学习笔记(6)图像的缩放
- OpenCV笔记9:图像的缩放
- OpenCV学习——图像的缩放
- 【OpenCV学习笔记 004】 图像的缩放、Canny边缘检测和图像的二值化
- OPenCV学习笔记(5)——图像缩放
- opencv缩放图像的实现
- OpenCV--图像的缩放-resize()
- opencv实现图像的缩放
- OpenCV学习之图像的旋转与缩放
- OpenCV学习(六)之图像缩放变换
- 【opencv学习笔记】1、opencv缩放图片
- OpenCV学习笔记:基本的图像处理
- 我的OPENCV学习笔记-图像混合
- Android学习笔记11:图像的平移、旋转及缩放
- Android学习笔记11:图像的平移、旋转及缩放
- opencv实现图像的剪切和缩放
- Opencv中图像的缩放处理
- android 长布局截图(listView ScrollView)
- 一致性哈希算法问题
- (十一)if... else...,以及!= ,== , =的区别
- SQL实现上一篇和下一篇
- 计算机组成原理实验一:基本逻辑门逻辑实验
- 【OpenCV学习笔记】2.2图像的缩放
- 计算机网络---基础题目汇总八
- SQL自动备份,误操作恢复ApexSQL log
- dgsdg
- Selenium环境准备
- 06_Java基本数据类型
- VMware虚拟机中,Cent OS下中文乱码的解决方法
- nginx学习2——常用命令操作
- 用PHP和JS分别实现隔行换色