栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

基于python的人脸图片压缩

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于python的人脸图片压缩

文章目录
    • 一、Windows 配置libjpeg-turbo
      • 1.1、vs2019上测试jpeg算法
    • 二、安装PyTurboJPEG库
      • 2.1、修改PyTurboJPEG库配置
      • 2.2、安装PyTurboJPEG库
    • 三、使用PyTurboJPEG库

近期眼研究图片的压缩方法,发现 JPEG算法解密这篇博客,讲的非常好。打算用python实现下相关算法。

一、Windows 配置libjpeg-turbo

参考链接:Windows 配置libjpeg-turbo并在python中调用

根据上述链接可以在windows上配置好libjpeg-turbo。这里可以小试一下。

这里可以参考链接:windows7 64位机上,libjpeg-turbo的安装和使用

1.1、vs2019上测试jpeg算法
  • 添加头文件

调试->属性->c/c++->常规->附加包含目录

D:cpluspluslibrarylibjpeg-turbo-main
  • 添加静态库

我cmake时安装的目录是install,这里路径要根据实际安装来修改。

调试->属性->链接器->常规->附加库目录,

D:cpluspluslibrarylibjpeg-turbo-maininstallDebug

调试->属性->链接器->输入->附加依赖项

jpeg-static.lib

在测试时需要将install中jconfig.h拷贝到根目录下,否则会找不到。测试代码可以参考windows7 64位机上,libjpeg-turbo的安装和使用

二、安装PyTurboJPEG库

clone代码:https://github.com/lilohuang/PyTurboJPEG.git

2.1、修改PyTurboJPEG库配置

将第一步中生成的turbojpeg.dll拷贝到C:WindowsSystem32目录下,其次还需要修改PyTurboJPEG库中的setup.py文件,将38~50行:

DEFAULT_LIB_PATHS = {
    'Darwin': ['/usr/local/opt/jpeg-turbo/lib/libturbojpeg.dylib'],
    'Linux': [
        '/usr/lib/x86_64-linux-gnu/libturbojpeg.so.0',
        '/usr/lib64/libturbojpeg.so.0',
        '/opt/libjpeg-turbo/lib64/libturbojpeg.so'
    ],
    'FreeBSD': [
        '/usr/local/lib/libturbojpeg.so.0',
        '/usr/local/lib/libturbojpeg.so'
    ],
    'Windows': ['C:/libjpeg-turbo64/bin/turbojpeg.dll']
}

修改为:

DEFAULT_LIB_PATHS = {
    'Darwin': ['/usr/local/opt/jpeg-turbo/lib/libturbojpeg.dylib'],
    'Linux': [
        '/usr/lib/x86_64-linux-gnu/libturbojpeg.so.0',
        '/usr/lib64/libturbojpeg.so.0',
        '/opt/libjpeg-turbo/lib64/libturbojpeg.so'
    ],
    'FreeBSD': [
        '/usr/local/lib/libturbojpeg.so.0',
        '/usr/local/lib/libturbojpeg.so'
    ],
    'Windows': ['turbojpeg.dll']
}
2.2、安装PyTurboJPEG库

cd到安装PyTurboJPEG库根目录下,执行

python setup.py install
三、使用PyTurboJPEG库
from turbojpeg import TurboJPEG, TJPF_GRAY, TJSAMP_GRAY, TJFLAG_PROGRESSIVE, TJFLAG_FASTUPSAMPLE, TJFLAG_FASTDCT

if __name__ == "__main__":
	in_file=open(r"D:datafacegood31630905185050.jpeg","rb")
	out_file=open("test.jpg",'wb')
	jpeg = TurboJPEG()
	img=jpeg.decode(in_file.read())
	img=jpeg.encode(img,quality=80)
	out_file.write(img)

Windows下PyTurboJPEG与opencv压缩算法的速度比较

FunctionWall-clock time
cv2.imdecode()0.358 sec
TurboJPEG.decode()0.135 sec
cv2.imencode()0.581 sec
TurboJPEG.encode()0.140 sec

可以看出libjpeg算法速度还是优于opencv自带的压缩算法的。。。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/423073.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号