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

作者:九品稀饭 时间:2022-05-06 03:47:51 

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函数吧,毕竟方便太多而且图像不会变模糊!

来源:https://blog.csdn.net/wwwq2386466490/article/details/79925991

标签:Python,OpenCV,图像,缩放
0
投稿

猜你喜欢

  • 将MySQL 5.0下的数据导入到MySQL 3.23中

    2009-01-04 13:02:00
  • 如何使用Iframe实现本页提交?

    2010-06-05 12:36:00
  • python读取csv文件示例(python操作csv)

    2023-02-28 23:12:02
  • css学习笔记:DIV水平垂直居中

    2009-06-19 12:45:00
  • asp对象之:基于adodb.stream的文件操作类

    2008-06-07 08:38:00
  • python中urllib.unquote乱码的原因与解决方法

    2023-08-24 14:56:43
  • Web 前端优化最佳实践之 Cookie 篇

    2008-06-25 13:00:00
  • python3实现带多张图片、附件的邮件发送

    2023-05-11 06:51:10
  • PHP安全的URL字符串base64编码和解码

    2023-09-06 22:04:45
  • 两组字符串数据比较合并相同数据

    2008-07-31 17:27:00
  • 2行css代码屏蔽网页挂马

    2008-09-29 18:54:00
  • 基于生活形态的用户分群研究

    2009-12-30 16:54:00
  • 从xml中获取城市,省份名称

    2008-09-05 15:07:00
  • div不换行,css不换行,自动换行

    2009-09-07 12:52:00
  • 二十种Python代码游戏源代码分享

    2023-07-31 01:37:16
  • 实用技巧:优化SQL Server数据库查询方法

    2009-02-04 13:46:00
  • 支持汉转拼和拼音分词的PHP中文工具类ChineseUtil

    2023-11-08 10:48:13
  • Python 专题五 列表基础知识(二维list排序、获取下标和处理txt文本实例)

    2023-09-03 10:22:39
  • SQL Server Bulk Insert 只需要部分字段时的方法

    2011-10-24 19:44:49
  • 如何使用微信公众平台开发模式实现多客服

    2023-11-14 17:48:37
  • asp之家 网络编程 m.aspxhome.com