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

窗口

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(预装)
FunctionWall-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(预装)
FunctionWall-clock time
cv2.imdecode()      0.358 sec  
TurboJPEG.decode()0.135 sec
cv2.imencode()      0.581 sec  
TurboJPEG.encode()0.140 sec

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Intellij通过方法中的包查找用法   java中VS代码和打包命名的问题   将java CMS功能集成到具有高度动态内容的网站(Lucene/Mysql/Nosql)的策略   oracle的java类强制转换异常。jdbc。驾驶员OracleConnection   字节码向JVM添加上指令   如何在抽象类中执行java方法?   java是否可以在apache访问日志中排除指定的GET参数?(作者:W7开发环境)   java如何获取已安装音频播放器的列表?   尝试向HS学生展示如何使用Java访问MS数据库   使用正则表达式java对给定行中的特定字符串进行计数   java JOOQ Select查询中的Select计数   方法Java,如何从二维双精度数组中找到特定值?   获取图像URL的java正则表达式   java在切换到新的窗口驱动程序后找不到元素