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中字符串对齐方法介绍
May 21 Python
Python访问纯真IP数据库脚本分享
Jun 29 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
Python画图学习入门教程
Jul 01 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 Python
python读取与写入csv格式文件的示例代码
Dec 16 Python
对python制作自己的数据集实例讲解
Dec 12 Python
Python3.0中普通方法、类方法和静态方法的比较
May 03 Python
python取余运算符知识点详解
Jun 27 Python
Python实现滑动平均(Moving Average)的例子
Aug 24 Python
pyspark对Mysql数据库进行读写的实现
Dec 30 Python
Python 带星号(* 或 **)的函数参数详解
Feb 23 Python
高考要来啦!用Python爬取历年高考数据并分析
单身狗福利?Python爬取某婚恋网征婚数据
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Python 中random 库的详细使用
Jun 03 #Python
详解Python常用的魔法方法
Python自动化之批量处理工作簿和工作表
Jun 03 #Python
Jupyter Notebook内使用argparse报错的解决方案
You might like
php递归函数中使用return的注意事项
2014/01/17 PHP
php的mssql数据库连接类实例
2014/11/28 PHP
PHP转盘抽奖接口实例
2015/02/09 PHP
php中文验证码实现方法
2015/06/18 PHP
PHP内置加密函数详解
2016/11/20 PHP
php版阿里大于(阿里大鱼)短信发送实例详解
2016/11/30 PHP
PHP使用反向Ajax技术实现在线客服系统详解
2019/07/01 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
pjblog中的UBBCode.js
2007/04/25 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
JavaScript中的迭代器和生成器详解
2014/10/29 Javascript
JavaScript获取对象在页面中位置坐标的方法
2016/02/03 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
2017/02/10 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
Bootstrap + AngularJS 实现简单的数据过滤字符查找功能
2017/07/27 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
详解node.js的http模块实例演示
2018/07/12 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
python 字典修改键(key)的几种方法
2018/08/10 Python
详解django的serializer序列化model几种方法
2018/10/16 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
python 可视化库PyG2Plot的使用
2021/01/21 Python
jupyter notebook指定启动目录的方法
2021/03/02 Python
卫校中专生个人自我评价
2013/09/19 职场文书
运动会广播稿200米
2014/01/27 职场文书
挂科检讨书范文
2014/02/20 职场文书
个人四风问题整改措施思想汇报
2014/10/04 职场文书
超市督导岗位职责
2015/04/10 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
详解Python+OpenCV绘制灰度直方图
2022/03/22 Python