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 相关文章推荐
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
Python Matplotlib库入门指南
May 18 Python
在Python程序中操作文件之flush()方法的使用教程
May 24 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
Python3安装pip工具的详细步骤
Oct 14 Python
Django连接数据库并实现读写分离过程解析
Nov 13 Python
基于python实现学生信息管理系统
Nov 22 Python
pycharm设置python文件模板信息过程图解
Mar 10 Python
在pycharm中文件取消用 pytest模式打开的操作
Sep 01 Python
Python之matplotlib绘制饼图
Apr 13 Python
Python用any()函数检查字符串中的字母以及如何使用all()函数
Apr 14 Python
高考要来啦!用Python爬取历年高考数据并分析
单身狗福利?Python爬取某婚恋网征婚数据
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Python 中random 库的详细使用
Jun 03 #Python
详解Python常用的魔法方法
Python自动化之批量处理工作簿和工作表
Jun 03 #Python
Jupyter Notebook内使用argparse报错的解决方案
You might like
动态新闻发布的实现及其技巧
2006/10/09 PHP
PHP 递归效率分析
2009/11/24 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
php析构函数的简单使用说明
2015/08/24 PHP
CI框架(ajax分页,全选,反选,不选,批量删除)完整代码详解
2016/11/01 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
JS 文件大小判断的实现代码
2010/04/07 Javascript
在标题栏显示新消息提示,很多公司项目中用到这个方法
2011/11/04 Javascript
JQuery实现简单验证码提示解决方案
2012/12/20 Javascript
JS原型链 详解及示例代码
2016/09/06 Javascript
JS文件/图片从电脑里面拖拽到浏览器上传文件/图片
2017/03/08 Javascript
easyui-edatagrid.js实现回车键结束编辑功能的实例
2017/04/12 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
2018/04/08 Javascript
浅谈Node.js 沙箱环境
2018/05/15 Javascript
使用vue-router完成简单导航功能【推荐】
2018/06/28 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
微信小程序基于canvas渐变实现的彩虹效果示例
2019/05/03 Javascript
vue实现评价星星功能
2020/06/30 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
Python base64编码解码实例
2015/06/21 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
详解如何修改jupyter notebook的默认目录和默认浏览器
2021/01/24 Python
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
东芝官网商城:还原日式美学,打造美好生活
2018/12/27 全球购物
如何写出好的Java代码
2014/04/25 面试题
工作违纪检讨书
2014/02/17 职场文书
企业文明单位申报材料
2014/05/16 职场文书
商场开业庆典策划方案
2014/06/02 职场文书
社区党建工作汇报材料
2014/08/14 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
党员对照检查材料整改措施思想汇报
2014/09/26 职场文书
辅导员学期工作总结
2015/08/14 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js