Python 3.x 如何在Windows上安装OpenJPEG并与枕头一起使用?

Python 3.x 如何在Windows上安装OpenJPEG并与枕头一起使用?,python-3.x,jpeg2000,Python 3.x,Jpeg2000,我想使用Python枕头库以jp2(“JPEG2000”)格式保存16位灰度数组 在我的Windows机器上安装所需的库OpenJPEG时,我遇到了麻烦。答案不是很清楚。。。但我认为我需要下载Win64二进制文件,并简单地将它们放在我的路径上(我做到了) 完成后,在Windows上使用Anaconda 4.3.0中的Pillow 4.0.0时,我仍然会遇到以下错误 IOError: encoder jpeg2k not available 任何人在那里成功地使用枕头写和读JPEG2000文件,

我想使用Python枕头库以
jp2
(“JPEG2000”)格式保存16位灰度数组

在我的Windows机器上安装所需的库OpenJPEG时,我遇到了麻烦。答案不是很清楚。。。但我认为我需要下载Win64二进制文件,并简单地将它们放在我的路径上(我做到了)

完成后,在Windows上使用Anaconda 4.3.0中的Pillow 4.0.0时,我仍然会遇到以下错误

IOError: encoder jpeg2k not available
任何人在那里成功地使用枕头写和读JPEG2000文件,我一定会感谢一些提示

编辑:

以下是失败的代码:

import PIL
import numpy as np

arr = np.ones(dtype=np.uint16, shape=(100, 100))
im = PIL.Image.fromarray(arr)
im.save('arr.jp2')
Anaconda构建Python不同版本的microsoft visual studio工具

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

枕头库使用编译的共享库。
您将需要使用与构建Python和Pillow时使用的ms visual studio工具版本完全相同的版本编译OpenJPEG。

我刚刚从安装程序中安装了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

供一般参考

相当于“nix.so”文件的Windows具有扩展名.dll(sic-“Windows二进制文件”-动态链接库);是的,文件必须位于系统路径中的某个位置

在路径中允许Windows查找文件,但这还不够。必须告诉Windows可以用它做什么;这是一个可共享的图书馆。这是由以下人员完成的:

1) 在二进制文件所在的(子)目录中打开DOS命令提示符;e、 g.C:\LIBS

2) 运行命令“regsvr32 filename.dll”。这会将.dll注册为共享文件(在Windows注册表中),以便Windows知道如何将其加载到内存中,并允许用户应用程序访问它

实际上,您可以从任何目录运行regsvr32(它是一个系统文件,应该在C:\Windows\system32目录中的某个位置;但是,在与.dll相同的目录中运行会更方便,因为否则您必须将filename.dll与从C:\到文件所在位置的整个目录树放在一起


您可以在没有目标文件名的情况下运行“regsvr32”,以获取可使用的命令行开关的弹出列表。

请提供您的代码,但失败。错误消息为“decoder”。您是否正在尝试打开文件?如果是,请提供一个示例文件,以便任何人都可以对其进行测试。对不起,我是从内存中键入的。它不是“decoder”错误;它是“编码器”。我还包括了失败的代码。我需要安装OpenJpeg的Pillow state文档…这就是我遇到的困难。对我来说,它在im上失败=…错误为“无法处理此数据类型”。你有什么Pillow版本(从conda列表输出)?Pillow 4.0.0。是的,这是一个刚刚修复的错误。所以,毕竟它保存为8位?啊。我这么做的全部目的是保存为16位。:(这太令人沮丧了。谢谢。那么你也编译了OpenJpeg吗?@KeithL我不使用ms windows。