2014-12-18 1 views
0

OpenCV imread ('Large Image')로 이미지를 읽으려고하는데 내 이미지에 25000 x 20000의 공간을 충분히 할당 할 수 없습니다. 이 이미지에서 빨강 및 파랑 픽셀 자체 배열 (실제로 녹색을 신경 쓰지 않아도 됨)은이 이미지에서 일부 수학을 수행하고 이러한 새로운 값으로 이미지를 재구성합니다. OpenCV 대신 내가 원하는 것을 할 수있는 대안이 있습니까?OpenCV 큰 이미지 (1GB 이상) 대안

내 컴퓨터는 Windows 8.1 64 비트를 실행하는 16GB를 가지고 있으며 파이썬을 사용하고 있습니다. 어떤 조언을 주셔서 미리 감사드립니다.

+0

단일 이미지는 약 1.4GB입니다. 와우 ... – karlphillip

+0

오류 메시지가 무엇입니까? – karlphillip

+0

어떤 형식입니까? (어쩌면 당신이 그것을 수동으로 구문 분석하고 그것을 읽는 동안 채널 이미지를 구성하는 것이 더 낫다) – berak

답변

1

Hadoop 및 OpenCv와 함께 HIPI 이미지 처리 인터페이스를 사용하는 것이 한 가지 방법입니다. 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/

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 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 
1

Libvips은 큰 이미지 용으로 설계되었습니다.

+0

vips-from-python 문서는 다음 위치에 있습니다. http://www.vips.ecs.soton.ac.uk/supported/current/doc/html/libvips/using-from-python.html – user894763

관련 문제