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登录Dr.com思路以及代码分享
Jun 25 Python
深入理解Python3 内置函数大全
Nov 23 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
Python装饰器的执行过程实例分析
Jun 04 Python
pymongo中group by的操作方法教程
Mar 22 Python
python实现网站用户名密码自动登录功能
Aug 09 Python
Python实现微信翻译机器人的方法
Aug 13 Python
numpy.linalg.eig() 计算矩阵特征向量方式
Nov 29 Python
Python图像处理库PIL的ImageGrab模块介绍详解
Feb 26 Python
python批量检查两个对应的txt文件的行数是否一致的实例代码
Oct 31 Python
Django+Django-Celery+Celery的整合实战
Jan 20 Python
高考要来啦!用Python爬取历年高考数据并分析
单身狗福利?Python爬取某婚恋网征婚数据
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Python 中random 库的详细使用
Jun 03 #Python
详解Python常用的魔法方法
Python自动化之批量处理工作簿和工作表
Jun 03 #Python
Jupyter Notebook内使用argparse报错的解决方案
You might like
劣质的PHP代码简化
2010/02/08 PHP
PHP IPV6正则表达式验证代码
2010/02/16 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
浅谈PHP值mysql操作类
2016/06/29 PHP
thinkPHP5.0框架应用请求生命周期分析
2017/03/25 PHP
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
js限制checkbox选中个数以限制六个为例
2014/07/15 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
详解使用vue实现tab 切换操作
2017/07/03 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
jquery.onoff实现简单的开关按钮功能(推荐)
2018/05/24 jQuery
解决vue admin element noCache设置无效的问题
2019/11/12 Javascript
JQuery复选框全选效果如何实现
2020/05/08 jQuery
Node.js利用Express实现用户注册登陆功能(推荐)
2020/10/26 Javascript
python实现的简单猜数字游戏
2015/04/04 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Python实现对文件进行单词划分并去重排序操作示例
2018/07/10 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
基于python实现百度翻译功能
2019/05/09 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
python time()的实例用法
2020/11/03 Python
html5 Canvas绘制线条 closePath()实例代码
2012/05/10 HTML / CSS
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
Daisy London官网:英国最大的首饰集团IBB旗下
2019/02/28 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
大学生自我鉴定
2013/12/08 职场文书
节约用水倡议书
2014/04/16 职场文书
综治宣传月活动总结
2014/04/28 职场文书
欢迎标语大全
2014/06/21 职场文书
水利局群众路线专题民主生活会发言材料
2014/09/21 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
MYSQL数据库使用UTF-8中文编码乱码的解决办法
2021/05/26 MySQL