基于python的人脸图片压缩


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

一、Windows 配置libjpeg-turbo

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

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

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

1.1、vs2019上测试jpeg算法

  • 添加头文件

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

D:\cplusplus\library\libjpeg-turbo-main
  • 添加静态库

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

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

D:\cplusplus\library\libjpeg-turbo-main\install\Debug

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

jpeg-static.lib

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

二、安装PyTurboJPEG库

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

2.1、修改PyTurboJPEG库配置

将第一步中生成的turbojpeg.dll拷贝到C:\Windows\System32目录下,其次还需要修改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:\data\face\good3\1630905185050.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自带的压缩算法的。。。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值