我尝试使用OpenCV imread('大图像')尝试读取图像,并且无法为我的图像分配足够的空间,即25000 x 20000.我想存储所有的红色从这个图像中有自己的数组中的蓝色像素(并非真正关心绿色)对它们进行一些数学运算并使用这些新值重建和成像。是否可以替代OpenCV做我想做的事情?
我的机器有16GB,运行Windows 8.1 64位,我使用python。提前感谢任何建议。
答案 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