脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python使用OpenCV对图像进行缩放功能

Python使用OpenCV对图像进行缩放功能

2022-10-24 11:08九品稀饭 Python

这篇文章主要介绍了Python使用OpenCV对图像进行缩放功能,文中给大家提到了两种调用方式及OpenCV中pryUp和pryDown的用法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

OpenCV:图片缩放和图像金字塔

对图像进行缩放的最简单方法当然是调用resize函数啦!

resize函数可以将源图像精确地转化为指定尺寸的目标图像。

要缩小图像,一般推荐使用CV_INETR_AREA来插值;若要放大图像,推荐使用CV_INTER_LINEAR。

现在说说调用方式

第一种,规定好你要图片的尺寸,就是你填入你要的图片的长和高。

#include<opencv2\opencv.hpp>   
#include<opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;

//图片的缩小与放大
int main()
{
  Mat img = imread("lol5.jpg");
  imshow("原始图", img);

  Mat dst = Mat::zeros(512, 512, CV_8UC3); //我要转化为512*512大小的
  resize(img, dst, dst.size());

  imshow("尺寸调整之后", dst);

  waitKey(0);

}

Python使用OpenCV对图像进行缩放功能

第二种,填入你要缩小或者放大的比率。

#include<opencv2\opencv.hpp>   
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;
//图片的缩小与放大
int main()
{
  Mat img = imread("lol5.jpg");
  imshow("原始图", img);
  Mat dst;
  resize(img, dst, Size(),0.5,0.5);//我长宽都变为原来的0.5倍
  imshow("尺寸调整之后", dst);
  waitKey(0);
}

Python使用OpenCV对图像进行缩放功能

 

接下来说说图像金字塔

说白了,图像金字塔就是用来进行图像缩放的,干的事情跟resize函数没两样,那我们还需要学它吗?我觉得有必要的额,因为在学习卷积神经网络中会遇到这个名词,所以都学一学吧,搞图形都绕不过他!

说说什么是图像金字塔。

Python使用OpenCV对图像进行缩放功能

其实非常好理解,如上图所示,我们将一层层的图像比喻为金字塔,层级越高,则图像尺寸越小,分辨率越低。

 

两种类型的金字塔:

  • 高斯金字塔:用于下采样,主要的图像金字塔;
  • 拉普拉斯金字塔:用于重建图像,也就是预测残差(我的理解是,因为小图像放大,必须插入一些像素值,那这些像素值是什么才合适呢,那就得进行根据周围像素进行预测),对图像进行最大程度的还原。比如一幅小图像重建为一幅大图像,

图像金字塔有两个高频出现的名词:上采样和下采样。现在说说他们俩。

  • 上采样:就是图片放大(所谓上嘛,就是变大),使用PryUp函数
  • 下采样:就是图片缩小(所谓下嘛,就是变小),使用PryDown函数

下采样将步骤:

对图像进行高斯内核卷积

将所有偶数行和列去除

下采样就是图像压缩,会丢失图像信息。

上采样步骤:

  • 将图像在每个方向放大为原来的两倍,新增的行和列用0填充;
  • 使用先前同样的内核(乘以4)与放大后的图像卷积,获得新增像素的近似值。

上、下采样都存在一个严重的问题,那就是图像变模糊了,因为缩放的过程中发生了信息丢失的问题。要解决这个问题,就得看拉普拉斯金字塔了。

下面给出OpenCV中pryUp和pryDown的用法。

#include<opencv2\opencv.hpp>   
#include<opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;
//图像金字塔
int main()
{
  Mat img = imread("lol8.jpg");
  imshow("原始图", img);
  Mat dst,dst2;
  pyrUp(img, dst, Size(img.cols*2, img.rows*2)); //放大一倍
  pyrDown(img, dst2, Size(img.cols * 0.5, img.rows * 0.5)); //缩小为原来的一半
  imshow("尺寸放大之后", dst);
  imshow("尺寸缩小之后", dst2);
  waitKey(0);
}

显然,无论是放大还是缩小,图像都变得模糊了,这就是他的致命缺点。

Python使用OpenCV对图像进行缩放功能

个人认为,要做缩放就用resize函数吧,毕竟方便太多而且图像不会变模糊!

到此这篇关于Python使用OpenCV对图像进行缩放功能的文章就介绍到这了,更多相关OpenCV图像缩放内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/wwwq2386466490/article/details/79925991

延伸 · 阅读

精彩推荐
  • Python快速解决安装python没有scripts文件夹的问题

    快速解决安装python没有scripts文件夹的问题

    下面小编就为大家分享一篇快速解决安装python没有scripts文件夹的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    yedoubushishen15202021-01-27
  • PythonFaust - 简洁高效的 Python 流处理库

    Faust - 简洁高效的 Python 流处理库

    在分布式系统和实时数据处理中,流处理是十分重要的技术。在数据密集型应用中,数据快速到达,转瞬即逝,需要及时进行处理,流式处理强调数据和事...

    每日开源代码9742021-03-17
  • PythonPython数据操作方法封装类实例

    Python数据操作方法封装类实例

    这篇文章主要介绍了Python数据操作方法封装类,结合具体实例形式分析了Python针对数据库的连接、执行sql语句、删除、关闭等操作技巧,需要的朋友可以参考...

    北京流浪儿4402020-11-20
  • PythonPython利用Beautiful Soup模块搜索内容详解

    Python利用Beautiful Soup模块搜索内容详解

    这篇文章主要给大家介绍了python中 Beautiful Soup 模块的搜索方法函数。 方法不同类型的过滤参数能够进行不同的过滤,得到想要的结果。文中介绍的非常详...

    Glumes2992020-09-27
  • PythonPython常用知识点汇总

    Python常用知识点汇总

    这篇文章主要介绍了Python常用知识点汇总,包括Set集合,函数,深入拷贝,浅入拷贝,需要的朋友可以参考下 ...

    脚本之家10462020-08-22
  • Python用Python编写web API的教程

    用Python编写web API的教程

    这篇文章主要介绍了用Python编写web API的教程,示例代码基于Python2.x版本,需要的朋友可以参考下...

    廖雪峰19162020-06-18
  • Python利用python修改json文件的value方法

    利用python修改json文件的value方法

    今天小编就为大家分享一篇利用python修改json文件的value方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    cabinx16782021-05-10
  • PythonPython开发技巧之海象运算符的三种运用方式

    Python开发技巧之海象运算符的三种运用方式

    这篇文章主要介绍了Python开发技巧之海象运算符的三种运用方式,海象运算符是在 PEP 572 被提出的,直到 3.8 版本合入发布,感兴趣的同学可以参考学习下...

    写代码的明哥11542022-02-17