2013-11-27 5 views
4

저는 OpenCV를 사용하고 있으며 기가 바이트의 이미지를 읽고 있습니다 - 한 번에 너무 많은 메모리에 적합하지 않습니다. 그러나 이미지 크기가 필요한 몇 가지 기본 구조를 초기화해야합니다. 지금은 imread을 사용하고 있고 곧바로 이미지를 풀어 버리면 정말 비효율적입니다.전체 이미지를 읽지 않고 OpenCV 이미지 크기

opencv를 사용하여 전체 파일을 읽지 않고 이미지 크기를 가져 오는 방법이 있습니까? 그렇지 않다면 헤더를 구문 분석 할 수있는 다른 라이브러리 (가볍고 가급적이면 사용되는 라이브러리)를 제안 할 수 있습니까? 적어도 OpenCV만큼 많은 형식을 지원하는 것이 이상적입니다.

답변

2

나는 이것이 opencv에서 직접 가능하다고 생각하지 않습니다.

문서에는 지정되어 있지 않지만 Java의 ImageReader.getHight (및 getWidth)은 전체 이미지가 아닌 이미지 헤더 만 구문 분석합니다.

또는 here은 머리글 만 확인하고 많은 양의 이미지 형식을 지원하는 알맞은 가벼운 라이브러리입니다.

마지막으로 리눅스에서 '식별'터미널 ​​명령을 사용하면 프로그래밍 방식으로 읽을 수있는 치수가 제공됩니다.

0

당신은 부스트 ​​길을 사용할 수

#include <boost/gil/extension/io/jpeg_io.hpp> 

int main(int argc, char *argv[]) 
{ 
    //set/get file_path 
    auto dims = boost::gil::jpeg_read_dimensions(file_path); 
    int width = dims.x; 
    int height = dims.y; 
} 

당신은 링커에 -ljpeg 플래그를 추가하여, libjpeg에 연결해야합니다. 좀 더 자세한 정보를 얻을 수 있습니다 here.

관련 문제