Windows 配置libjpeg-turbo并在python中调用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_36669549/article/details/85193944

0.为啥

最近在python中调用jpeg4py相关库的时候报错

AttributeError: 'JPEG' object has no attribute 'decompressor'

查看里面的代码

首先它

import jpeg4py as jpeg

然后再decode的时候报错

jpeg.JPEG(img_path).decode()

究其原因是它不能load libjpeg-turbo library

也就是 libjpeg-turbo 库我的电脑里没有

所以就要安装这个库,libjpeg-turbo是与libjpeg接口兼容的一个jpeg编/解码库,其主要的特点就是利用SIMD指令(如X86架构的MMX/SSE/SSE2,ARM架构的NEON)来加速jpeg图像的编/解码,相比被广泛使用的libjpeg,编码和解码性能提高2~4倍左右。

1.安装NASM

因为libjpeg-turbo的源代码中用到了SIMD汇编指令,所以要编译源代码,就要先安装NASM,我下的是win64的下载链接,以管理员身份运行,默认路径即可,然后将其添加到环境变量中。

2.编译libjpeg-turbo

然后在从github上下载libjpeg-turbo的源码,解压后,进入D:\libjpeg-turbo\libjpeg-turbo-master

创建一个build文件夹,打开CMAKE(如果没有安装就去官网下一个安装就行)。

Where is the source code : D:/libjpeg-turbo/libjpeg-turbo-master

Where to build the binaries: D:/libjpeg-turbo/libjpeg-turbo-master/build

点击configure 然后会让你选择编译器,我的编译器是vs2015,选择的是Visual Studio 14 2015 Win64

这里选不对就会报错。没报错就很棒!

点击 Generate 

然后打开../build 看到里面由好多的文件,打开ALL_BUILD.vcxproj

在vs2015中打开后,选择release ----点击生成----生成解决方案

成功,这时候,你再打开.../build/Release文件夹,就会发现生成很多 .exe  .lib  .dll

其中我最想要的是turbojpeg.dll

3.重新安装jpeg4py

下载源码-----github链接

解压,然后进入.../jpeg4py-master 中,打开.../jpeg4py-master\src\jpeg4py中的_cffi.py文件

用notepad++打开就行

拉到最下

将你刚刚生成的文件的路径写上去,注意斜杠!

然后回到.../jpeg4py-master 中右键+shift 打开power shell 输入python setup.py install

安装完成!

4.普通测试

你可以随便找一个jpeg格式的图片,放在某个路径中,然后输入

F:\tracker_programe\Pytorch-SiamFC-master>python
Python 3.6.6 |Anaconda, Inc.| (default, Jun 28 2018, 11:27:44) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import jpeg4py as jpeg
>>> jpeg.JPEG("001.jpg").decode()

然后会显示

array([[[192, 199, 209],
        [192, 199, 209],
        [192, 199, 209],
        ...,
        [192, 199, 209],
        [192, 199, 209],
        [192, 199, 209]],

       [[192, 199, 209],
        [192, 199, 209],
        [192, 199, 209],
        ...,
        [192, 199, 209],
        [192, 199, 209],
        [192, 199, 209]],

       [[192, 199, 209],
        [192, 199, 209],
        [192, 199, 209],
        ...,
        [192, 199, 209],
        [192, 199, 209],
        [192, 199, 209]],

       ...,

       [[192, 199, 209],
        [192, 199, 209],
        [192, 199, 209],
        ...,
        [192, 199, 209],
        [192, 199, 209],
        [192, 199, 209]],

       [[192, 199, 209],
        [192, 199, 209],
        [192, 199, 209],
        ...,
        [192, 199, 209],
        [192, 199, 209],
        [192, 199, 209]],

       [[192, 199, 209],
        [192, 199, 209],
        [192, 199, 209],
        ...,
        [192, 199, 209],
        [192, 199, 209],
        [192, 199, 209]]], dtype=uint8)

这就已经成功了!

5.我自己的调用

我是在跟踪问题调用的---pytorch版的SiamFC

在可视化的时候遇到的这个问题

在问题解决以后

我再输入

python vis_app.py -d F:\tracker_programe\ILSVRC2015_VID\ILSVRC2015 -n best.pth.tar -t train -s 10

结果:

猜你喜欢

转载自blog.csdn.net/baidu_36669549/article/details/85193944
今日推荐