OpenCV大图像(大于1gb)的替代品

时间:2014-12-18 16:42:31

标签: python opencv image-processing

我尝试使用OpenCV imread('大图像')尝试读取图像,并且无法为我的图像分配足够的空间,即25000 x 20000.我想存储所有的红色从这个图像中有自己的数组中的蓝色像素(并非真正关心绿色)对它们进行一些数学运算并使用这些新值重建和成像。是否可以替代OpenCV做我想做的事情?

我的机器有16GB,运行Windows 8.1 64位,我使用python。提前感谢任何建议。

3 个答案:

答案 0 :(得分:1)

一种方法是使用HIPI图像处理接口与Hadoop和OpenCv。 HIPI(http://hipi.cs.virginia.edu/about.html)可用于将图像剔除成几个较小的部分,运行opencv处理,然后重建更大的图像。

可在此处找到一个不错的设置指南: - https://techgimmick.wordpress.com/2015/06/24/how-to-use-opencv-with-hadoop-or-hipi-hadoop-image-processing-interface/

答案 1 :(得分:1)

Libvips专为大型图片而设计。

答案 2 :(得分:0)

您可以使用属于ImageMagick的stream工具将任何所需波段的任何所需区域提取到这样的二进制文件中。

从25,000x20,000像素文件bigboy.tif中提取整个红色通道:

stream -map r bigboy.tif red.bin

ls -l
-rw-r--r--  1 mark  staff  500000000  7 Sep 13:55 red.bin

从bigboy.tif的蓝色通道中提取位于1000,2000位置的100x400像素:

stream -map b -extract 100x400+1000+2000 bigboy.tif blue.bin
ls -l 
-rw-r--r--    1 mark  staff       40000  7 Sep 13:54 blue.bin

同样地,甚至可能更优化,你可以使用vips来提取红色乐队:

vips im_extract_bands bigboy.tif red.tif 1 1 --vips-leak
memory: high-water mark 241.32 MB

ls -l
-rw-r--r--    1 mark  staff  1000001466  7 Sep 14:35 red.tif