python cv2图像质量压缩的算法示例


Posted in Python onJune 04, 2021

使用opencv对图像进行编码,一方面是图像二进制传输的需要,另一方面对图像压缩。以jpeg压缩为例:

1、转为二进制编码

img = cv2.imread(img_path)
# 取值范围:0~100,数值越小,压缩比越高,图片质量损失越严重
params = [cv2.IMWRITE_JPEG_QUALITY, ratio]  # ratio:0~100
msg = cv2.imencode(".jpg", img, params)[1]
msg = (np.array(msg)).tobytes()
print("msg:", len(msg))

对于png压缩,改为:

# 取值范围:0~9,数值越小,压缩比越低,图片质量越高
params = [cv2.IMWRITE_PNG_COMPRESSION, ratio]  # ratio: 0~9
msg = cv2.imencode(".png", img, params)[1]
msg = (np.array(msg)).tobytes()

对于图像解码,使用imdecode即可解为numpy类型图像:

img = cv2.imdecode(np.frombuffer(msg, np.uint8), cv2.IMREAD_COLOR)
print(img.shape, type(img))

2、图像质量压缩

原图(48k):

python cv2图像质量压缩的算法示例

jpg压缩:

img_path = r"E:\img.jpg"
img = cv2.imread(img_path)
cv2.imwrite(r"E:\ret_80.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 80])
cv2.imwrite(r"E:\ret_40.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 40])
cv2.imwrite(r"E:\ret_10.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 10])
cv2.imwrite(r"E:\ret_0.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 0])

结果:

python cv2图像质量压缩的算法示例

压缩后图像大小依次为:49.6K、25.6K、11K、5.02K。jpg压缩明显,压缩到极致时颜色信息损失严重。

png压缩:

img_path = r"E:\img.jpg"
img = cv2.imread(img_path)
cv2.imwrite(r"E:\ret_0.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 0])
cv2.imwrite(r"E:\ret_3.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 3])
cv2.imwrite(r"E:\ret_6.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 6])
cv2.imwrite(r"E:\ret_9.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 9])

结果:

python cv2图像质量压缩的算法示例

压缩后图像大小依次为:675K、364K、364K、360K。png格式偏大,压缩率调到最高也还有360K,且成像上无明显变化。

PS:也可以对图像压缩后保存,如:

img_path = r"E:\img.jpg"
img = cv2.imread(img_path)
params = [cv2.IMWRITE_PNG_COMPRESSION, 0]
msg = cv2.imencode(".png", img, params)[1]
msg = (np.array(msg)).tobytes()
print("msg:", len(msg))
img = cv2.imdecode(np.frombuffer(msg, np.uint8), cv2.IMREAD_COLOR)
cv2.imwrite(rr"E:\ret.jpg", img)

bug处理:

早期版本这样写:

msg = (np.array(msg)).tostring()
改为:
msg = (np.array(msg)).tobytes()
 
img = cv2.imdecode(np.fromstring(msg, np.uint8), cv2.IMREAD_COLOR)
改为:
img = cv2.imdecode(np.frombuffer(msg, np.uint8), cv2.IMREAD_COLOR)

到此这篇关于python cv2图像质量压缩的算法示例的文章就介绍到这了,更多相关python cv2图像质量压缩 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
1 行 Python 代码快速实现 FTP 服务器
Jan 25 Python
python pandas 对series和dataframe的重置索引reindex方法
Jun 07 Python
python 多线程重启方法
Feb 18 Python
python 并发编程 多路复用IO模型详解
Aug 20 Python
Python爬虫实现“盗取”微信好友信息的方法分析
Sep 16 Python
Python文字截图识别OCR工具实例解析
Mar 05 Python
python简单的三元一次方程求解实例
Apr 02 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
Python实现打包成库供别的模块调用
Jul 13 Python
Python django框架 web端视频加密的实例详解
Nov 20 Python
Python调用SMTP服务自动发送Email的实现步骤
Feb 07 Python
python3 实现mysql数据库连接池的示例代码
Apr 17 Python
高考要来啦!用Python爬取历年高考数据并分析
单身狗福利?Python爬取某婚恋网征婚数据
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Python 中random 库的详细使用
Jun 03 #Python
详解Python常用的魔法方法
Python自动化之批量处理工作簿和工作表
Jun 03 #Python
Jupyter Notebook内使用argparse报错的解决方案
You might like
PHP 配置文件中open_basedir选项作用
2009/07/19 PHP
php修改NetBeans默认字体的大小
2013/07/02 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP实现负载均衡下的session共用功能
2018/04/17 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
在网站上应该用的30个jQuery插件整理
2011/11/03 Javascript
JavaScript数组函数unshift、shift、pop、push使用实例
2014/08/27 Javascript
jQuery中outerHeight()方法用法实例
2015/01/19 Javascript
JS遍历数组及打印数组实例分析
2016/01/21 Javascript
js不间断滚动的简单实现
2016/06/03 Javascript
JavaScript正则表达式的贪婪匹配和非贪婪匹配
2017/09/05 Javascript
详解js访问对象的属性和方法
2018/10/25 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
如何优雅地取消 JavaScript 异步任务
2020/03/22 Javascript
jQuery 函数实例分析【函数声明、函数表达式、匿名函数等】
2020/05/19 jQuery
[04:39]显微镜下的DOTA2第十三期—Pis卡尔个人秀
2014/04/04 DOTA
浅谈Python中数据解析
2015/05/05 Python
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
浅谈Python2获取中文文件名的编码问题
2018/01/09 Python
用python与文件进行交互的方法
2018/03/01 Python
TensorFlow实现简单卷积神经网络
2018/05/24 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python文件读写代码实例
2019/10/21 Python
python如何使用jt400.jar包代码实例
2019/12/20 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
2020/03/30 Python
美国网上订购鲜花:FTD
2016/09/23 全球购物
音乐学个人的自荐书范文
2013/11/26 职场文书
车间统计员岗位职责
2015/04/14 职场文书
农村党员干部承诺书
2015/05/04 职场文书
2016年重阳节慰问信
2015/12/01 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
九年级语文教学反思
2016/03/03 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
导游词之湖州-太湖
2019/10/11 职场文书