最快的Python本机图像处理方式?
我正在创建一个在图像上迭代并进行x/y变换和缩放的过程。原始图像非常大。我当前的过程包括制作一个bash脚本(使用python)来创建行和使用所有著名的Imagemagick转换的行。使用convert的主要优点是,您可以将图像加载到内存中一次,然后写出每个帧。然而,这个bash脚本工作流是不可持续的,我需要一些更原生的东西。这就引出了一个问题:最快的Python本机图像处理方式?,python,image,imagemagick,python-imaging-library,scikit-image,Python,Image,Imagemagick,Python Imaging Library,Scikit Image,我正在创建一个在图像上迭代并进行x/y变换和缩放的过程。原始图像非常大。我当前的过程包括制作一个bash脚本(使用python)来创建行和使用所有著名的Imagemagick转换的行。使用convert的主要优点是,您可以将图像加载到内存中一次,然后写出每个帧。然而,这个bash脚本工作流是不可持续的,我需要一些更原生的东西。这就引出了一个问题: 什么是最快的python图像处理库 操纵?考虑到图像的大小,速度是最重要的 进球 以下是我的研究(以及一些修补)所带来的结果: 魔杖(Imagem
- 什么是最快的python图像处理库 操纵?考虑到图像的大小,速度是最重要的 进球
我想听听你的意见。这条评论太长了。所以我把它放在这里 请注意,除了ImageMagick之外,我不是这些工具的专家,但对每种工具都有一点涉猎 我欢迎比我更擅长使用这些工具的人发表评论或意见 我很少使用魔杖或PIL。我不喜欢PIL,因为在我有限的经验中,如果不重新格式化,它就不能与numpy兼容。所以我不使用它。如果你喜欢ImageMagick convert,魔杖看起来不错。我使用了Skimage和OpenCV来处理不同的事情。并将它们混合在一些Python numpy脚本中 如果你知道ImageMagick,魔杖可能是最容易使用的。我对它的速度知之甚少。看见我认为存在的一个魔杖限制是它缺少处理个人资料的能力 请参阅了解PIL,它可能是下一个最容易使用的。但它的图像格式可能需要更改格式才能与numpy一起使用。我认为它并不像魔杖那样功能齐全 另请参见有关旋转、调整大小和仿射变换的信息。它是第二个最容易使用的,但可能比其他两个更快 也可以看到,虽然你必须用矩阵来做这些。它也非常快,具有GPU功能 除了我发现Skimage和OpenCV比Imagemagick快之外,我没有计时的经验。但是,除了我上面的评论之外,对于Imagemagick可以做的简单事情,它们没有那么直接的功能 我认为您必须决定在编码的速度和效率方面需要什么样的折衷 如果有人知道一组编码和速度测试,将这些工具与简单的操作(如调整大小、旋转、裁剪、仿射、透视等)进行比较,那么这将非常有用,我希望了解更多有关比较的信息 注意:我发现这些关于PIL的参考资料已经过时,并被枕头取代: 另请参见文档:
我还没有试过最新版本的枕头。安装枕头很简单,而且总是有效:“pip安装枕头”。当然,如果您的Python实例是系统范围的,那么您需要以root或administratoral的身份执行此操作。因此,如果您的Python实例必须使用“Python3”进行调用,那么您将使用“pip3安装枕头”。我对Python的Skimage和numpy进行了一些涉猎,以进行图像处理。工作有点困难,但速度很快。我发现PIL(枕头)的功能有点有限。也有OpenCV,但对于简单的事情,它不如ImageMagick灵活,但有ImageMagick中未包含的功能,但比ImageMagick更快。ImageMagick在做简单的事情时非常灵活。有一只蟒蛇,但它很旧。Wand可能是Python ImageMagick类型处理的最佳选择。您使用convert命令进行了什么样的处理?例如,对我来说,略读是最自然的。当然,我的numpy背景也起了作用。您并没有详细说明您的操作,但Skipage听起来是一个非常好的选择(对于更现代的枕头,使用PIL;枕头也是最容易安装的)。fmw42提到的OpenCV对于某些需求来说也是一个很好的调用。不知道是不是给你的。这完全取决于您实际在做什么(缩放或子图像索引对于所有基于c阵列的内核来说应该同样快;但是插值/调整大小可能会有所不同)。@jdoer1997我又给了枕头一次机会。好像只要我卸载了PIL,枕头导入和工作都没有问题。很好的总结,谢谢。如果图像很大,我肯定会建议基准测试
libvips
——它非常快速而且非常节省内存资源。另请参见和@Mark Setchell
。谢谢马克,这是一个很棒的资源。不幸的是,我没有看到Python撇除。我也很惊讶OpenCV 2.4没有那么快。但也许OpenCV 3更快。尽管可以将GPU与OpenCV结合使用。当前的libvips Python绑定在这里:只需安装libvips共享库,然后pip install pyvips
@fmw42,该测试对OpenCV有点不公平——它有很多图像IO,OpenCV处理速度相当慢,ocv处理速度非常快。Ocv也不会为您提供线程,