By 凌顺

2019年9月12日

本示例使用的OpenCV版本是:4.1.1

运行Python的编辑器:Jupyter notebook

示例目的

使用OpneCV的cv2.resize()函数对图片进行放大与缩小。

实现代码

1,加载图片

从文件中加载图像,并输出该图片的大小(高度和宽度)

import cv2 # 加载OpenCV

import matplotlib.pyplot as plt # 加载Matplotlib.pyplot存进plt

img = cv2.imread("cook.jpeg") # 读取/加载 图片

print('original image shape:', img.shape) #输出图片的高度,宽度,色彩通道数量

执行上面的代码,会看到大概如下输出,数字分别代表着高度,宽度,色彩通道数量

original image shape: (147, 342, 3)

在本教程,我们只关心高度和宽度。

2,把图像缩小1倍

使用 cv.resize() 我们可以指定宽度和高度进行缩放,例如,我把宽度和高度都除以2,则可以把图片缩小1倍。

# 获取图片高度,宽度,色彩通道数量

height, width, channel = img.shape

# 使用cv.resize对图像进行缩放

resized_img = cv2.resize(img, (width//2, height//2))

# 输出缩小后的图像高度,宽度,色彩通道数量

print('resized to image shape:', resized_img.shape)

这时可以看到,高度是73,宽度是171,正好是原图的缩小2倍,小数部分向下取整。

resized to image shape: (73, 171, 3)

3,把图像放大一倍

使用同样的方法,我也可以把图像放大2倍。例如,我把宽度和高度都乘以2。

# 使用cv.resize对图像进行缩放

resized_img = cv2.resize(img, (width*2, height*2))

# 输出缩放后的图像高度,宽度,色彩通道数量

print('resized to image shape:', resized_img.shape)

这时可以看到,高度是294,宽度是684,正好是原图的放大2倍。

resized to image shape: (294, 684, 3)

4,通过因数进行原图比例的缩放

通过原图的比例因数进行缩放

# 定义缩放因素,w_mult宽度因数,h_mult高度因数

w_mult, h_mult = 0.25, 0.5

# 使用因数进行缩放的示例

resized_img = cv2.resize(img, (0, 0), resized_img, h_mult, w_mult)

# 输出缩放后的图像高度,宽度,色彩通道数量

print('resized to image shape:', resized_img.shape)

```python

可以看到如下输出:

> resized to image shape: (74, 86, 3)

### 5,指定使用最临近插值方式进行缩放

我们使用cv2.INTER_NEAREST定义了缩放的方式为最临近插值方式。

> 最临近插值,通常被用于图像缩放中,进行缩放图像的方法叫做最临近插值算法,这是一种最基本、最简单的图像缩放算法。效果并不好,放大后的图像有很严重的马赛克,缩小后的图像有很严重的失真;效果不好的根源就是其简单的最临近插值方法引入了严重的图像失真。

```python

w_mult, h_mult = 0.25, 0.5

resized_img = cv2.resize(img, (0, 0), resized_img, w_mult, h_mult, cv2.INTER_NEAREST)

print('half sized image shape:', resized_img.shape)

可以看到如下输出:

resized to image shape: (74, 86, 3)

程序说明

OpenCV还提供了多样的缩放方法

本示例主要使用了cv.cvtColor()函数进行色彩空间的转换,该函数有两个参数,两个可选参数。而在显示图片方面如果使用cv.imshow()窗口显示的方式,图片的颜色会正常些,使用plt.imshow()在Jupyter notebook显示的颜色则可能需要一些转换或设置才能达到想要的颜色。

cv.resize()语法

dst = cv.resize( src, dsize[, dst[, fx[, fy[, interpolation]]]] )

第一个参数 src,输入的图像,

第二个参数 dsize,输出图像的尺寸; 如果等于零,则计算如下:

python opencv压缩图片_OpenCV Python 缩放图片相关推荐

  1. Python OpenCV:利用鼠标移动缩放图片

    一.实现目标   在OpenCV中通过鼠标左键拖拽移动图片,通过鼠标滚轮前后旋转放大缩小图片. 二.实现背景   在前一篇博客在OpenCV中使用滚动条显示大图中发现自己画滚动条移动大图略显繁琐,且缩 ...

  2. python opencv 录制视频_OpenCV Python 录制视频

    学到实用OpenCV调用笔记本电脑的摄像头,并录制视频保存到本地硬盘的时候,出现了一点故障,那就是获取到的文件总是为0KB.经过一番查找,终于找到了解决办法. 调用摄像头 调用摄像头作为本实验的基础是 ...

  3. python opencv 等比例调整(缩放)图片分辨率大小代码 cv2.resize()

    # -*- coding: utf-8 -*- """ @File : 200113_等比例调整图像分辨率大小.py @Time : 2020/1/13 13:38 @A ...

  4. python opencv 批量将视频转化为图片

    单个的视频转换图片参看: python opencv 把视频转为图片 对于多个视频,采用多线程处理方法 video_path为待转换视频的路径,pic_path为输出图像的路径,输出的图像统一保存在p ...

  5. python图像文件压缩_python中如何实现图片压缩

    python实现图片压缩的方法:1.导入Image包:2.使用get_size(file)命令获取图片文件的大小:3.使用[os.path.splitext()]方式拼接文件地址:然后压缩文件到指定大 ...

  6. python opencv通过4个坐标,剪裁图片(抠图)

    一.opencv 裁剪说明 效果展示,要裁剪的图片 裁剪出的单词图像(如下) 这里程序我是用在paddleOCR里面,通过识别模型将识别出的图根据程序提供的坐标(即四个顶点的值)进行抠图的程序(上面的 ...

  7. python使用opencv如何保存图片_OpenCV Python 保存图片

    本示例使用的OpenCV版本是:4.1.1 运行Python的编辑器:Jupyter notebook 示例目的 通过无损和有损的方式进行图片保存. 实现代码 1,加载图片 import cv2 # ...

  8. python opencv报错_OpenCV in Python 入门问题,python报错 -问答-阿里云开发者社区-阿里云...

    OpenCV是Intel®开源计算机视觉库.它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. 在这篇文章(译自 http://glowingpython.bl ...

  9. python制作七夕礼物_OpenCV+Python制作程序七夕(情人节)礼物

    1. 按 不知不觉七夕就过去了! 如果有对象,祝早生贵子!没有对象,祝早结连理! (搞笑一下,祝大家幸福美满吧,嘿嘿嘿) 给大家准备了一份已经写好的代码,利用Python+OpenCV+OpenPyX ...

  10. python制作七夕礼物_opencv+python制作硬核七夕礼物

    点击上方"蓝色小字"关注我呀 明天就是七夕了! 如果有对象,祝早生贵子!没有对象,祝早结连理! (搞笑一下,祝大家幸福美满吧,嘿嘿嘿) 给大家准备了一份已经写好的代码,利用pyth ...

最新文章

  1. SearchRequestBuilder常用方法说明
  2. 为什么大多数同学宁愿吃学习的苦,也不愿意尝思考的痛?
  3. antd 函数组件_React - 组件:函数组件
  4. 五大IT巨头 成立专利联盟
  5. TeraTerm设定(窗体大小,字体字号)保存为默认值
  6. 《帝王三部曲》——二月河
  7. Cookie 解说(分类、用途、缺陷、功能 ...)
  8. java is a like a_JAVA基础——is-a 、have-a、和 like-a的区别
  9. 三分法解决凸(凹)函数极值问题
  10. 五个角度,来梳理下产品经理的分类和职业发展方向
  11. mac共享文件夹 linux,一文搞定 Linux,Mac,Windows 的 NFS 网络文件共享服务部署
  12. 实验五 存储管理实验
  13. 对Gamma校正的理解
  14. 分布式 | dble 读写分离场景下为什么普通的读 sql 发送到了 master 实例上
  15. animatext.js文字动画js特效插件
  16. 抖音收购musical.ly后,最难过的为什么是快手?
  17. JVM 垃圾收集算法及垃圾收集器
  18. UART/USB UART/USB你必须知道的
  19. 利用autojs制作抢购支付宝消费劵的手机脚本
  20. 阿里云ACP云计算对象存储OSS例题

热门文章

  1. 网络爬虫DIY解决电商数据收集难题
  2. ORACLE ORA-01950 对表空间无权限
  3. 【收藏】2019届互联网大厂公司校招薪资汇总,基本年薪都在20万以上
  4. 顺序表倒置java_倒置顺序表
  5. Tektronix泰克DPO4054示波器
  6. winUSB设备上位机驱动开发环境的搭建
  7. 每周一学表格WPS函数公式:将文本日期转换成正常日期格式
  8. c语言录入信息后无法显示桌面,输入法在桌面不显示,怎么修改能显示在桌面任 – 手机爱问...
  9. 数据结构也不是那么没意思之中序二叉树+二叉树转伪双向循环链表
  10. 计算机软件系统的组成