我想使用Python Pillow库以jp2
(" JPEG 2000")格式保存16位灰度数组。
我试图在我的Windows机器上安装所需的OpenJPEG库时遇到了困难。 documentation不是很清楚......但我认为我需要下载Win64二进制文件并简单地将它们放在我的路径上(我做过)。
完成后,我在Windows上的Anaconda 4.3.0中使用Pillow 4.0.0时仍然出现以下错误。
IOError: encoder jpeg2k not available
那里的任何人都成功地使用Pillow来编写和阅读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 :(得分:1)
我刚刚使用here的安装程序安装了Pillow。我选择了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。
答案 1 :(得分:0)
Anaconda构建了Python using不同版本的microsoft visual studio工具。
这些工具的每个版本都有自己的运行时,与其他版本不兼容。
Pillow库使用编译的共享库。 您将需要使用完全编译OpenJPEG与用于构建Python和Pillow的ms visual studio工具相同的版本。
答案 2 :(得分:-1)
供一般参考。
相当于'nix .so文件的Windows具有扩展名.dll(sic-“ Windows Binaries”-动态链接库);是的,该文件必须驻留在系统PATH中的某个位置。
位于PATH中可让Windows查找文件,但这还不够。 Windows必须被告知可以使用它做什么。这是一个共享库。通过以下方式完成:
1)在二进制文件所在的(子)目录中打开一个DOS命令提示符;例如C:\ LIBS
2)运行命令“ regsvr32 filename.dll”。这样会将.dll注册为共享文件(在Windows注册表中),以便Windows知道如何将其加载到内存中并允许用户应用程序访问它。
您实际上可以从任何目录运行regsvr32(它是系统文件,应位于C:\ Windows \ system32目录中;但是与.dll在同一目录中运行会更方便,因为否则必须先添加filename.dll,以及整个目录树,从C:\到文件所在的位置。
您可以在没有目标文件名的情况下运行“ regsvr32”,以获取可以使用的命令行开关的弹出列表。