Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最快的Python本机图像处理方式?_Python_Image_Imagemagick_Python Imaging Library_Scikit Image - Fatal编程技术网

最快的Python本机图像处理方式?

最快的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

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

  • 什么是最快的python图像处理库 操纵?考虑到图像的大小,速度是最重要的 进球
以下是我的研究(以及一些修补)所带来的结果:

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

Skimage-我很想使用Skimage来了解操作的深度(尽管对于我的需求来说有些过分),但我已经找到了API/文档 很难相处。但是,您可以加载 将图像镜像到numpy数组中,并获得极快的速度(对于Python, 无论如何,这似乎是一个令人信服的论点

PIL-PIL的安装非常棘手,这在我尝试部署的一些系统上造成了很多麻烦。不过,API是 非常容易。我一般都听说,由于天气原因,要远离PIL 这是持续的发展困境

枕头-与上述类似,我在使用枕头时遇到了一些问题。我想我读到枕头可能会和枕头冲突。。。大概 这就是问题所在


我想听听你的意见。

这条评论太长了。所以我把它放在这里

请注意,除了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也不会为您提供线程,