最快的Python本机方式来操作图像?

问题描述 投票:0回答:1

我正在创建一个迭代图像并进行 x/y 变换和缩放的过程。原始图像非常大。我当前的流程涉及制作一个 bash 脚本(使用 python),以使用著名的 Imagemagick Convert 创建行和行。使用 Convert 的主要优点是您可以将图像加载到内存中一次,然后写出每个帧。然而,这个 bash 脚本工作流程是不可持续的,我需要一些更原生的东西。所以这就引出了一个问题:

  • 最快的图像Python处理库是什么 操纵?考虑到图像可以有多大,速度是最重要的 目标。

这是我的研究(和一些修补)引导我的地方:

Wand(Imagemagick 包装器)- 理论上,Wand 会很棒!但我发现没有提到能够从中读取图像 内存,这使得它非常慢。

Skimage - 我很想使用 Skimage 来进行深度操作(尽管对我的需求来说有点过头了),但我找到了 API/文档 很难合作。但是,事实上您可以加载 将图像转换为 numpy 数组并获得极快的速度(对于 Python, 无论如何),似乎是一个令人信服的论点。

PIL - Pil 的安装可能非常棘手,这在我尝试部署的一些系统上造成了很多麻烦。不过,API 是 非常简单。我听说一般要远离 PIL,因为 这是持续的发展困境。

Pillow - 与上面类似,我在让 Pillow 工作时遇到了一些麻烦。我想我读到 Pillow 可能与 PIL 冲突......也许 这就是问题所在?

我希望得到一些意见。

python image imagemagick python-imaging-library scikit-image
1个回答
2
投票

对于一条评论来说太长了。所以我把它放在这里。

请注意,除了 ImageMagick 之外,我不是这些工具中任何一个的专家,但对每个工具都略有涉猎。

我欢迎其他比我更专业的人对这些工具的评论或意见

我没怎么用过 Wand 或 PIL。我不喜欢 PIL,因为根据我有限的经验,如果不重新格式化,它与 numpy 不兼容。所以我不使用它。如果您喜欢 ImageMagick 转换,Wand 看起来不错。我使用 Skimage 和 OpenCV 来完成不同的事情。并将它们混合在一些 Python numpy 脚本中。

如果您了解 ImageMagick,Wand 可能是最容易使用的。我不太了解它的速度。请参阅https://docs.wand-py.org/en/0.6.12/wand/image.html。我认为 Wand 存在的一个局限性是它缺少处理配置文件的能力。

请参阅 https://pillow.readthedocs.io/en/stable/reference/Image.html 了解 PIL,这可能是第二个最容易使用的。但其图像格式可能需要更改格式才能与 numpy 一起使用。我不认为它像 Wand 那样功能齐全。

另请参阅 http://scikit-image.org/docs/dev/api/skimage.transform.html 了解旋转、调整大小和仿射变换。它是第二个最容易使用的,但可能比其他两个更快。

另请参阅https://docs.opencv.org/3.0-beta/doc/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html,尽管您必须使用矩阵来完成所有这些操作。它的速度也非常快并且具有 GPU 功能。

除了我发现 Skimage 和 OpenCV 比 Imagemagick 更快之外,我没有计时方面的经验。但除了我上面的评论之外,它们对于 Imagemagick 可以做的简单事情来说不太直接。

我认为你必须决定在编码速度和效率方面你想要什么妥协。

如果有人知道一组编码和速度测试,可以在简单操作(例如调整大小、旋转、裁剪、仿射、透视等)上比较这些工具,那么这将很有用,我欢迎了解更多有关比较的信息。

附注我发现这些关于 PIL 已过时并被 Pillow 取代的参考文献:

https://pillow.readthedocs.io/en/stable/about.html https://pillow.readthedocs.io/en/stable/installation.html

另请参阅文档: https://pypi.org/project/pillow/ https://pillow.readthedocs.io/en/stable/reference/Image.html

我还没有尝试过新版本的 Pillow。

© www.soinside.com 2019 - 2024. All rights reserved.