【问题标题】:How do I install OpenJPEG on Windows and use it with Pillow?如何在 Windows 上安装 OpenJPEG 并将其与 Pillow 一起使用?
【发布时间】:2017-02-12 06:56:48
【问题描述】:

我想使用 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')

【问题讨论】:

  • 请提供您的代码,但失败了。错误消息显示“解码器”。您是否正在尝试打开文件?如果是,那么请提供一个示例文件,以便任何人都可以对其进行测试。
  • 对不起,我是凭记忆输入的。这不是“解码器”错误;它是“编码器”。我还包括了失败的代码。 Pillow 的文档说明我需要安装 OpenJpeg……这就是我遇到的困难。
  • 对我来说,它在 im = ... 上失败,并出现错误“无法处理此数据类型”。你有什么枕头版本(输出形式 conda list)?
  • 枕头 4.0.0。是的,这是最近才修复的错误。

标签: python-3.x jpeg2000


【解决方案1】:

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

测试它的代码:

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。

【讨论】:

  • 那么毕竟它保存为 8 位?呃。我这样做的重点是保存为 16 位。 :(这令人沮丧。谢谢。
【解决方案2】:

Anaconda 构建 Python using 不同版本的microsoft visual studio 工具。

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

Pillow 库使用已编译的共享库。 您将需要使用与用于构建 Python 和 Pillow 的相同版本的 ms Visual Studio 工具完全编译 OpenJPEG。

【讨论】:

  • 你也编译过 OpenJpeg 吗?
  • @KeithL 我不使用 ms-windows。
【解决方案3】:

供一般参考。

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

位于 PATH 中允许 Windows 找到文件,但这还不够。必须告诉 Windows 可以用它做什么;这是一个可共享的库。由以下人员完成:

1) 在二进制文件所在的(子)目录中打开一个 DOS 命令提示符;例如C:\LIBS

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-13
    • 1970-01-01
    • 2015-11-27
    • 2022-12-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    相关资源
    最近更新 更多