基于python的人脸图片压缩

基于python的人脸图片压缩,第1张

基于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 timecv2.imdecode()0.358 secTurboJPEG.decode()0.135 seccv2.imencode()0.581 secTurboJPEG.encode()0.140 sec

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5071102.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-16
下一篇 2022-11-16

发表评论

登录后才能评论

评论列表(0条)

保存