程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

基於python的人臉圖片壓縮

編輯: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:\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 timecv2.imdecode()0.358 secTurboJPEG.decode()0.135 seccv2.imencode()0.581 secTurboJPEG.encode()0.140 sec

可以看出libjpeg算法速度還是優於opencv自帶的壓縮算法的。。。


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved