凡哥OpenCV基础入门教程(跳一跳专题)-CH1.4-图片保存imwrite
2018-03-16 21:04
483 查看
原创作品,转载请注明出处!!
凡哥给大家讲解了如何保存jpg格式与png格式的图片, 以及他们的压缩质量/压缩等级的设定.
![](http://image.myfange.com/0119_cat.jpg-fg)
0119_cat.jpg我们在读入img之后, 对图像进行各种操作, 例如图像均衡, 图像绘制等. 接下来, 直接使用
![](http://image.myfange.com/bear.jpg-fg)
bear
![](http://image.myfange.com/Screenshot_20180121_220953.png-fg)
Screenshot_20180121_220953.png图像大小对比.
![](http://image.myfange.com/Screenshot_20180121_221320.png-fg)
Screenshot_20180121_221320.png
![](http://image.myfange.com/Screenshot_20180121_213701.png-fg)
Screenshot_20180121_213701.png说实话,打开图片看清晰度,我们肉眼非常难看到有啥区别,不过我们可以通过文件属性文件大小来体现出来.
![](http://image.myfange.com/Screenshot_20180121_214659.png-fg)
Screenshot_20180121_214659.png
0. 概要
在之前的HighGUI展示图片的课程中, 凡哥没有讲解图像保存的问题. 图像的保存, 我们需要使用imwrite 函数.凡哥给大家讲解了如何保存jpg格式与png格式的图片, 以及他们的压缩质量/压缩等级的设定.
1. 图像的简单保存
这次我们读入的还是小猫. &:-)老面孔![](http://image.myfange.com/0119_cat.jpg-fg)
0119_cat.jpg我们在读入img之后, 对图像进行各种操作, 例如图像均衡, 图像绘制等. 接下来, 直接使用
imwrite函数, 第一个参数
./cat2.png是即将保存的文件路径与文件名. 因为我在Ubuntu下, 所以文件路径会使用斜杠
/, 函数的第二个参数就是图像矩阵
img.
CH1.4_ImageWriteToPNG.py
1import numpy as np 2import cv2 3 4# 导入一张图像 模式为彩色图片 5img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR) 6 7# 读入灰度图 8cv2.imwrite('./cat2.png', img)具体保存为什么图像格式, 是根据图像路径名字的后缀去判断的, 后缀为
.png就保存为
png格式的图片. 哈哈, 凡哥猜到你已经会保存
JPEG格式的图片啦. 知识充电站: jpg 跟 jpeg其实是一个东西, jpg是jpeg的简称. jpeg是Joint Photographic Experts Group(联合图像专家小组)的缩写
CH1.4_ImageWriteToJPG.py
1import numpy as np 2import cv2 3 4# 导入一张图像 模式为彩色图片 5img = cv2.imread('cat.jpg', cv2.IMREAD_COLOR) 6 7# 保存为PNG图片 8cv2.imwrite('./cat3.jpg', img)关于 JPEG, PNG等格式之间图片的差异, 可以查阅知乎文章 jpg和png有什么区别?
2. 图像的压缩保存
图像的保真度, 靠imwrite函数的第三个参数来指定.第三个参数, 针对不同的图片保存类型, 对应的含义也有所不同.在图像压缩的演示里, 我们采用棕熊的图片.
![](http://image.myfange.com/bear.jpg-fg)
bear
2.1 JPEG压缩保存
JPEG的第三个参数所代表的意思是图像质量
cv2.IMWRITE_JPEG_QUALITY, 取值范围在 0-100, 默认是95.
1cv2.imwrite('http://image.myfange.com/bear_quality_50.jpg', img, [cv2.IMWRITE_JPEG_QUALITY, 50])我们将质量度分成10段 展示一下各种质量度下的图片.
CH1.4_ImageWriteToJPGQuality.py
1import numpy as np 2import cv2 3 4# 导入一张图像 模式为彩色图片 5img = cv2.imread('http://image.myfange.com/bear.jpg', cv2.IMREAD_COLOR) 6 7for quality in range(0, 100, 10): 8 9 # 保存为PNG图片 10 cv2.imwrite('http://image.myfange.com/bear_quality_{}.jpg'.format(quality), img, [cv2.IMWRITE_JPEG_QUALITY, quality])
![](http://image.myfange.com/Screenshot_20180121_220953.png-fg)
Screenshot_20180121_220953.png图像大小对比.
![](http://image.myfange.com/Screenshot_20180121_221320.png-fg)
Screenshot_20180121_221320.png
2.2 PNG压缩保存
PNG对应的称之为压缩级别cv2.IMWRITE_PNG_COMPRESSION压缩级别的取值范围从0到9. 0 代表无压缩, 9代表最大压缩.例如我们使用压缩级别4去存储图片, 就可以这么写.
1cv2.imwrite('http://image.myfange.com/bear_compression_4.png', img, [cv2.IMWRITE_PNG_COMPRESSION, 4])凡哥写个程序, 让大家直观的感受到不同压缩级别的效果.
CH1.4_ImageWriteToPNG_Compression.py
1import numpy as np 2import cv2 3 4# 导入一张图像 模式为彩色图片 5img = cv2.imread('http://image.myfange.com/bear.png') 6 7for cmpi in range(0, 10): 8 # 保存为PNG图片 9 cv2.imwrite('http://image.myfange.com/bear_compression_{}.png'.format(cmpi), img, [cv2.IMWRITE_PNG_COMPRESSION, cmpi]) 10 print("压缩级别 {}".format(cmpi))
![](http://image.myfange.com/Screenshot_20180121_213701.png-fg)
Screenshot_20180121_213701.png说实话,打开图片看清晰度,我们肉眼非常难看到有啥区别,不过我们可以通过文件属性文件大小来体现出来.
![](http://image.myfange.com/Screenshot_20180121_214659.png-fg)
Screenshot_20180121_214659.png
![](http://image.myfange.com/%E5%BE%AE%E4%BF%A1%E5%85%AC%E4%BC%97%E5%8F%B7%E5%BA%95%E9%83%A8.png-bk)
相关文章推荐
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH1.1-读入图片并显示图片的相关属性
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH1.2_通过Matplotlib展示图片
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH1.3-通过HighGUI展示图片
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH3.2-进程与数据流重定向
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH3.3-subprocess模块的使用说明
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH2.1-花式创建空白画布
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH3.4-实战篇 手动模式玩跳一跳
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH2.3-几何图像绘制与文字绘制
- 凡哥OpenCV基础入门教程-跳一跳专题
- 凡哥OpenCV基础入门教程(跳一跳专题)-CH3.1-ADB安装过程与ADB部分指令介绍
- OpenCV入门:(二:加载,显示,修改以及保存图片)
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
- Android基础入门教程——10.13 传感器专题(4)——其他传感器了解
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
- Android基础入门教程——6.2 数据存储与访问之——SharedPreferences保存用户偏好参数
- Android基础入门教程——10.11 传感器专题(2)——方向传感器
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放
- 【OpenCV入门教程之十三】OpenCV图像金字塔:高斯金字塔、拉普拉斯金字塔与图片尺寸缩放