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中endswith()函数的基本使用
Apr 07 Python
Python实现栈的方法
May 26 Python
python字符串与url编码的转换实例
May 10 Python
Numpy数据类型转换astype,dtype的方法
Jun 09 Python
python pygame实现2048游戏
Nov 20 Python
python读取目录下最新的文件夹方法
Dec 24 Python
Python实现删除排序数组中重复项的两种方法示例
Jan 31 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
python多线程调用exit无法退出的解决方法
Feb 18 Python
基于Python的PIL库学习详解
May 10 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
Sep 18 Python
python 动态绘制爱心的示例
Sep 27 Python
高考要来啦!用Python爬取历年高考数据并分析
单身狗福利?Python爬取某婚恋网征婚数据
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
Python 中random 库的详细使用
Jun 03 #Python
详解Python常用的魔法方法
Python自动化之批量处理工作簿和工作表
Jun 03 #Python
Jupyter Notebook内使用argparse报错的解决方案
You might like
PHP程序中使用adodb连接不同数据库的代码实例
2015/12/19 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
PHP云打印类完整示例
2016/10/15 PHP
PHP获取指定日期是星期几的实现方法
2016/11/30 PHP
php之header的不同用法总结(实例讲解)
2017/11/28 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
侧栏跟随滚动的简单实现代码
2013/03/18 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
js实现常用排序算法
2016/08/09 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
Express结合Webpack的全栈自动刷新
2019/05/23 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
python实现的解析crontab配置文件代码
2014/06/30 Python
Python标准库之循环器(itertools)介绍
2014/11/25 Python
Python中使用PIL库实现图片高斯模糊实例
2015/02/08 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
简单谈谈Python中的json与pickle
2017/07/19 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
使用PyTorch训练一个图像分类器实例
2020/01/08 Python
python实现飞行棋游戏
2020/02/05 Python
PyCharm 2020 激活到 2100 年的教程
2020/03/25 Python
django queryset相加和筛选教程
2020/05/18 Python
高中生的自我评价
2014/03/04 职场文书
学校师德承诺书
2014/05/23 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers