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多线程编程方式分析示例详解
Dec 06 Python
使用Python制作获取网站目录的图形化程序
May 04 Python
python通过cookie模拟已登录状态的初步研究
Nov 09 Python
你眼中的Python大牛 应该都有这份书单
Oct 31 Python
利用Python写一个爬妹子的爬虫
Jun 08 Python
python二维列表一维列表的互相转换实例
Jul 02 Python
python实现指定字符串补全空格、前面填充0的方法
Nov 16 Python
python实现nao机器人手臂动作控制
Apr 29 Python
python 计算概率密度、累计分布、逆函数的例子
Feb 25 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
Apr 14 Python
Python做图像处理及视频音频文件分离和合成功能
Nov 24 Python
python批量创建变量并赋值操作
Jun 03 Python
高考要来啦!用Python爬取历年高考数据并分析
单身狗福利?Python爬取某婚恋网征婚数据
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Python 中random 库的详细使用
Jun 03 #Python
详解Python常用的魔法方法
Python自动化之批量处理工作簿和工作表
Jun 03 #Python
Jupyter Notebook内使用argparse报错的解决方案
You might like
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
使用Linux五年积累的一些经验技巧
2013/06/20 PHP
基于JQuery框架的AJAX实例代码
2009/11/03 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
js中 计算两个日期间的工作日的简单实例
2016/08/08 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
Knockout结合Bootstrap创建动态UI实现产品列表管理
2016/09/14 Javascript
原生JS实现简单放大镜效果
2017/02/08 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
前端把html表格生成为excel表格的实例
2017/09/19 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
JS变量提升原理与用法实例浅析
2020/05/22 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
详解Python的Django框架中的模版继承
2015/07/16 Python
Python 含参构造函数实例详解
2017/05/25 Python
python中defaultdict的用法详解
2017/06/07 Python
python实现简单加密解密机制
2019/03/19 Python
Python Json数据文件操作原理解析
2020/05/09 Python
HTML5+CSS3实现机器猫
2016/10/17 HTML / CSS
美国开幕式潮店:Opening Ceremony
2018/02/10 全球购物
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
爱情检讨书大全
2014/01/21 职场文书
九年级化学教学反思
2014/01/28 职场文书
学生感冒英文请假条
2014/02/04 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
少年闰土教学反思
2014/02/22 职场文书
离职报告范文
2014/11/04 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书
2015年社区综治宣传月活动总结
2015/03/25 职场文书
学习经验交流会策划书
2015/11/02 职场文书
学习心理学心得体会
2016/01/22 职场文书
解决WINDOWS电脑开机后桌面没有任何图标
2022/04/09 数码科技