2017-02-12 83 views
0

我想使用Python Pillow库以jp2(“JPEG 2000”)格式保存16位灰度级数组。如何在Windows上安装OpenJPEG并将其与Pillow一起使用?

我试图在我的Windows机器上安装所需的库OpenJPEG时碰到了一堵砖墙。 documentation不是很清楚......但我认为我需要下载Win64二进制文件,并将它们放在我的路径上(我所做过的)。

完成后,在Windows上的Anaconda 4.3.0中使用Pillow 4.0.0时,仍然出现以下错误。

IOError: encoder jpeg2k not available 

任何人在那里成功地使用枕头来写和读JPEG 2000文件,我一定会感激一些技巧。

编辑:

这里是一个失败的代码:

import PIL 
import numpy as np 

arr = np.ones(dtype=np.uint16, shape=(100, 100)) 
im = PIL.Image.fromarray(arr) 
im.save('arr.jp2') 
+0

请提供您的代码,失败。错误消息说“解码器”。你想打开文件吗?如果是,那么请提供一个示例文件,以便任何人都可以对其进行测试。 –

+0

对不起,我是从记忆中输入的。这不是“解码器”错误;它是“编码器”。此外,我已经包括了代码片断,失败。枕头文件表明我需要安装OpenJpeg ......这就是我遇到的困难。 –

+0

对我来说,它在im =上失败,出现错误“无法处理这个数据类型”。你有什么枕头版本(输出形式conda列表)? –

回答

0

蟒蛇构建Python using不同版本的Microsoft Visual Studio工具。

这些工具的每个版本都有自己的运行时,这与不兼容与其他版本。

枕头库使用编译的共享库。 您将需要编译OpenJPEG 正好是用于构建Python和Pillow的ms visual studio工具的相同版本。

+0

那么你是否也编译OpenJpeg? –

+0

@KeithL我不使用ms-windows。 –

0

我刚刚安装了枕头,安装程序从here。我选择了Pillow-4.0.0.win-amd64-py3.5.exe。在安装过程中,它找到了conda的python并正确选择了安装位置(它安装在根环境中)。

代码来测试它的工作原理:

from PIL import Image 
import numpy as np 
arr = np.ones(dtype=np.uint16, shape=(100,100)) 
im = Image.fromarray(arr) 
im.save('test.jp2') 

。注意,保存的文件有8 BPP。

+0

那么最终它保存为8位? Ughh。我正在做的这一点是保存为16位。 :(真让人沮丧,谢谢。 –

相关问题