【OpenCV】opencv中的resize函数的插值方式
插值方式
- resize 函数的介绍
- 各种插值方式
- INTER_NEAREST,最近邻插值法
- INTER_LINEAR,双线性插值法
- 总结
resize 函数的介绍
无论是通过C++来编写opencv,还是通过python来写opencv,它们所包有的函数是基本一致的,因此,在这里我通过python来举例子:
cv2.resize(img,(0,0),fx=0.5,fy=0.5,interpolation=cv2.INTER_NEAREST)
在这里,里面有四个属性,第一个属性是输入图像的矩阵,即通过imread()函数将图片读入,得到了数值矩阵并存放到img中;而第二个属性则是(0,0),而这表示并不是直接通过规定缩放或放大后的图像大小;而第三个属性fx和fy则是0.5,表示长宽都缩小一倍;而第四个属性则是插值方法了。
各种插值方式
插值方法则是当图片缩放时,图片的像素点数值的大小的变化,因为图片的大小发生了变化,因此,这时插值方法就显得较为重要,否则,在不同的应用场合会造成不必要的影响。而插值方式分以下几种:
- INTER_NEAREST,即最近邻插值法;
- INTER_LINEAR,即双线性插值法,这也是默认设置,当我们忽略这一条属性时,计算机就会默认我们选的是这个;
- INTER_AREA,即区域插值法,使用像素区域关系进行重采样。 它大概率下是图像抽取的首选方法,因为它会产生无云纹理的结果。 但是当图像缩放时,它类似于INTER_NEAREST方法。
- INTER_CUBIC,即三次样条插值
- INTER_LANCZOS4,即8x8像素邻域的Lanczos插值
实际上,这些插值方法都是通过比较变化前后图像,从而推出一个映射关系,找到每个对应的像素点,而由于变化前后图像大小的不一样,可能对应的像素是一个虚拟的像素,即为一个浮点数,而并非是一个整数,因此衍生出了如何解决这个虚拟像素取值的问题,从而得到了以上的方法。
INTER_NEAREST,最近邻插值法
最近邻插值法将虚拟像素坐标的浮点数进行了四舍五入,比如坐标为(10,10)的像素点,对应到了虚拟像素点(0.75,0.75),而这四舍五入后,则为(1,1),而这样的插值方法极为不准确,若是放大图像,则会生成马赛克,若是缩小图片,又会发生失真的情况,实际上,如果遇到了这种情况,比较好的做法是将虚拟像素点周围四个点按照公式计算出来,这样效果才是最好的,例如双线性插值法,而之前的做法仅仅会导致大量的信息丢失,而这极其不符合图片压缩的原理(在损失最小的压缩所得到的结果就是最本质的结构),而我们按照了这种方法,则已经将大量的信息丢失,损失已经是相当地大了,但这不可否认是最基本的一种插值方法。
INTER_LINEAR,双线性插值法
正如我们之前所提到的,双线性插值法就是在所得到的虚拟像素点周围四个真实点按照所给定的公式计算得到,而这样做,则是让我们将图片的信息结合到了一起,图片损失较小,当然,像这种插值方法,无论是哪种方法,所生成的图片的质量相比于原有的图片来说,总是有所不如的。
总结
这五种插值方法的具体含义就不一一列举了,但总而言之,这五种方法,一种比一种好,只是需要耗费的时间也越来越多。
【OpenCV】opencv中的resize函数的插值方式相关推荐
- OpenCV中resize()函数的插值方式对比
在进行图像缩放过程中,opencv中的resize函数是最常用的,其速度相对较快,只需要一行代码即可.此函数中提供5种缩放插值的方法.在下文中将进行对比. 1.resize函数简介 void ...
- opencv中的resize 函数 的理解以及引申
本文为转载文,原文链接:https://www.cnblogs.com/zvmxvm1991/p/7891394.html 一.什么是resize 函数: resize函数opencv中专门用来调整图 ...
- python opencv resize函数_Python OpenCV中的resize()函数的使用
改变图像大小意味着改变尺寸,无论是单独的高或宽,还是两者.也可以按比例调整图像大小. 这里将介绍resize()函数的语法及实例. 语法 函数原型 cv2.resize(src, dsize[, ds ...
- OpenCV 图片尺寸缩放——resize函数
文章目录 OpenCV中的缩放: resize函数 代码案例 OpenCV中的缩放: 如果要放大或缩小图片的尺寸,可以使用OpenCV提供的两种方法: resize函数,是最直接的方式: pyrUp, ...
- OpenCV代码提取:resize函数的实现
之前在http://blog.csdn.net/fengbingchun/article/details/17335477 中有过对cv::resize函数五种插值算法的介绍.这里将OpenCV3.1 ...
- opencv python 中cv2.putText()函数的用法
opencv python 中cv2.putText()函数的用法 文章目录: 一.快速使用 二.官方文档 三.使用举例 虽然用啦很多次,还是决定记录一下 一.快速使用 cv2.putText(ima ...
- C++:vector中的resize()函数 VS reserve()函数
http://www.cplusplus.com/reference/vector/vector/vector/ 写代码的时候无意错用了这两个函数 导致测试的时候,程序运行崩溃 发现这两个函数还是有区 ...
- C语言学习及应用笔记之七:C语言中的回调函数及使用方式
我们在使用C语言实现相对复杂的软件开发时,经常会碰到使用回调函数的问题.但是回调函数的理解和使用却不是一件简单的事,在本篇我们根据我们个人的理解和应用经验对回调函数做简要的分析. 1.什么是回调函数 ...
- opencv中的resize函数实现图像插值缩放
如果本文对您有帮助,请帮忙点赞.评论.收藏,感谢! python 为例 一. 函数原型 dst=cv.resize(src, dsize[, dst[, fx[, fy[, interpolation ...
最新文章
- 网络爬虫流程与注意事项
- 用tabbar mode为Emacs建立ta
- arduino雨滴传感器原理_Arduino酸度计(PH计)
- 在VB 中调用动态连接库
- ITK:拉普拉斯递归高斯图像滤波器
- Python:self理解
- 2021高考成绩查询时间福州,福州2021高考填志愿入口
- Spring Boot 学习之,AOP统一处理请求日志
- 学习 Shell —— 认识 shell
- centos时间同步
- python中tile的用法_Python:numpy中的tile函数
- c++位运算,|,~,^,,
- kernel的initcall函数
- 智工教育:公务员考试这些知识点你会背了吗?
- 十二时辰及经络走向图
- 完全二叉树的高度为什么是对lgN向下取整
- 记录关于微信开放平台扫码登录的问题
- 数字版权保护(Digital Right Management,DRM)
- Win10 键盘输入法消失后如何恢复
- 视频号日引流500+精准流量6大玩法,实现微信后端转化变现丨国仁网络资讯
热门文章
- 哈工大一位师兄个人简历 谨以自勉
- 关于vue动画没有效果的解决
- my read_house_adornment
- UML实现图 组件图、配置图
- http接口开发及调用
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
- 有趣又有料:任意操控静态图片中人的眼球
- java获取f5服务器真实ip_F5中源地址转换(AutoMap)模式下后端服务器获取客户端真正的IP地址...
- 微信跳转外部浏览器打开指定链接源码
- Apache安装中出现443端口被占用的解决方法