我正在创建一个迭代图像并进行x/y转换和缩放的进程。原始图像非常大。我的当前过程包括使用一个bash脚本(使用python)来使用著名的Imagemagick转换来创建行和行。使用转换的主要好处是,您可以将图像加载到内存中一次,然后写出每个帧。然而,这个bash脚本工作流是不可持续的,我需要一些更本地的东西。这就引出了一个问题:
这就是我的研究(和一些修补)引导我的地方:
Wand (Imagemagick包装器)--理论上说,魔杖是很棒的!但是我发现没有提到能够从记忆中读取图像,这使得它非常慢。 Skimage --我很想使用Skimage作为操作的深度(尽管对我的需要过于苛刻),但是我发现使用这个API/文档非常困难。但是,您可以将图像加载到numpy数组中并获得惊人的速度(无论如何,对于Python来说),这似乎是一个令人信服的论点。 Pil -Pil的安装可能非常棘手,这在我试图部署的几个系统上造成了很多麻烦。API,虽然,它是相当容易。我听说通常远离PIL,因为这是一个持续的发展问题。 枕头-类似于上面,我遇到了一些问题,让枕头工作。我看过枕头和皮尔有冲突..。也许这就是问题所在?
我想要一些意见。
发布于 2017-11-03 04:53:41
对于一个评论来说,这太长了。所以我把它放在这里。
请注意,除了ImageMagick之外,我不是这些工具中的任何一个专家,但我对每个工具都做了一些尝试。
我欢迎其他人的评论或意见,他们比我更擅长这些工具。
我没有经常使用魔杖或魔杖。我不喜欢PIL,因为在我有限的经验中,它和numpy不兼容,不需要重新格式化。所以我不使用它。如果你喜欢ImageMagick转换,魔杖看起来不错。我在不同的事情上使用了Skimage和OpenCV。并将它们混合在一些Python numpy脚本中。
如果您知道ImageMagick,魔杖可能是最容易使用的。我对它的速度不太了解。见http://docs.wand-py.org/en/0.4.1/wand/image.html。我认为存在的一个魔杖限制是它缺少处理配置文件的能力。
请参阅http://pillow.readthedocs.io/en/3.1.x/reference/Image.html中的PIL,这可能是下一个最容易使用的。但是它的图像格式可能需要更改格式,以便与numpy一起工作。我不认为它像魔杖那样功能齐全.
还请参阅http://scikit-image.org/docs/dev/api/skimage.transform.html进行旋转、调整大小和仿射变换。这是下一个最容易使用的,但可能比其他两个更快。
请参见transformations.html,尽管您必须使用矩阵来完成所有这些工作。它也是非常快和有GPU的能力。
除了我发现Skimage和OpenCV比Imagemagick更快之外,我没有其他的计时经验。但是,除了我上面的评论之外,对于Imagemagick可以做的简单事情,它们没有那么直接的功能。
我认为你必须决定在编码的速度和效率方面你想要什么妥协。
如果有人知道一组编码和速度测试,比较这些工具的简单操作,如调整大小、旋转、裁剪、仿射、透视等,那么这将是有用的,我欢迎更多地了解这些比较。
我发现这些关于PIL的引用已经过时,并被枕头所取代:
http://pillow.readthedocs.io/en/3.4.x/about.html http://pillow.readthedocs.io/en/3.4.x/installation.html
还请参阅docs:https://pypi.python.org/pypi/Pillow/4.3.0 https://pillow.readthedocs.io/en/4.3.x/reference/Image.html
我还没有试过新版本的枕头。
https://stackoverflow.com/questions/47086380
复制相似问题