libjpeg-turbo的python包装器,用于jpeg图像的解码和编码。
PyTurboJPEG的Python项目详细描述
pyturbojpeg
libjpeg-turbo的python包装器,用于jpeg图像的解码和编码。
先决条件
示例
importcv2fromturbojpegimportTurboJPEG,TJPF_GRAY,TJSAMP_GRAY,TJFLAG_PROGRESSIVE# specifying library path explicitly# jpeg = TurboJPEG(r'D:\turbojpeg.dll')# jpeg = TurboJPEG('/usr/lib64/libturbojpeg.so')# jpeg = TurboJPEG('/usr/local/lib/libturbojpeg.dylib')# using default library installationjpeg=TurboJPEG()# decoding input.jpg to BGR arrayin_file=open('input.jpg','rb')bgr_array=jpeg.decode(in_file.read())in_file.close()cv2.imshow('bgr_array',bgr_array)cv2.waitKey(0)# direct rescaling 1/2 while decoding input.jpg to BGR arrayin_file=open('input.jpg','rb')bgr_array_half=jpeg.decode(in_file.read(),scaling_factor=(1,2))in_file.close()cv2.imshow('bgr_array_half',bgr_array_half)cv2.waitKey(0)# decoding JPEG image propertiesin_file=open('input.jpg','rb')(width,height,jpeg_subsample,jpeg_colorspace)=jpeg.decode_header(in_file.read())in_file.close()# encoding BGR array to output.jpg with default settings.out_file=open('output.jpg','wb')out_file.write(jpeg.encode(bgr_array))out_file.close()# encoding BGR array to output.jpg with TJSAMP_GRAY subsample.out_file=open('output_gray.jpg','wb')out_file.write(jpeg.encode(bgr_array,jpeg_subsample=TJSAMP_GRAY))out_file.close()# encoding BGR array to output.jpg with quality level 50. out_file=open('output_quality_50.jpg','wb')out_file.write(jpeg.encode(bgr_array,quality=50))out_file.close()# encoding BGR array to output.jpg with quality level 100 and progressive entropy coding.out_file=open('output_quality_100_progressive.jpg','wb')out_file.write(jpeg.encode(bgr_array,quality=100,flags=TJFLAG_PROGRESSIVE))out_file.close()# decoding input.jpg to grayscale arrayin_file=open('input.jpg','rb')gray_array=jpeg.decode(in_file.read(),pixel_format=TJPF_GRAY)in_file.close()cv2.imshow('gray_array',gray_array)cv2.waitKey(0)
安装
macos
- brew安装jpeg turbo
- pip安装-u git+git://github.com/lilohuang/pyturbojpeg.git
窗口
- 下载libjpeg-turbo official installer
- pip安装-u git+git://github.com/lilohuang/pyturbojpeg.git
Linux
- 下载libjpeg-turbo.repo到/etc/yum.repos.d/
- sudo yum安装libjpeg turbo office
- pip安装-u git+git://github.com/lilohuang/pyturbojpeg.git
基准
macos
- 马科斯塞拉10.12.6
- 英特尔(R)酷睿(TM)i5-3210M CPU,2.50GHz
- opencv python 3.4.0.12(预构建)
- turbo jpeg 1.5.3(预装)
Function | Wall-clock time |
---|---|
cv2.imdecode() | 0.528 sec |
TurboJPEG.decode() | 0.191 sec |
cv2.imencode() | 0.875 sec |
TurboJPEG.encode() | 0.176 sec |
窗口
- Windows 7 Ultimate 64位
- Intel(R)Xeon(R)E3-1276 v3 CPU@3.60 GHz
- opencv python 3.4.0.12(预构建)
- turbo jpeg 1.5.3(预装)
Function | Wall-clock time |
---|---|
cv2.imdecode() | 0.358 sec |
TurboJPEG.decode() | 0.135 sec |
cv2.imencode() | 0.581 sec |
TurboJPEG.encode() | 0.140 sec |