2013-11-27 55 views
4

我正在使用OpenCV并正在读取千兆字节的图像 - 太多以至于无法一次装入内存。但是,我需要初始化一些需要图像尺寸的基本结构。目前,我正在使用imread,然后立即释放图像,这实在是效率低下。OpenCV图像尺寸没有读取整个图像

有没有办法在不读取整个文件的情况下使用opencv获取图像尺寸?如果不是,你可以建议另一个库(最好是轻量级的,因为这是所有它将被用于)可以解析头文件?理想情况下,它至少支持与OpenCV一样多的格式。

回答

2

我不认为这是可能的,直接在opencv。

虽然没有在文档中指定,但是Java的ImageReader.getHight(和getWidth)只分析图像标题,而不是整个图像。

或者here是一个合理的外观轻量级库,它绝对只检查标题,并支持大量的图像格式。

最后,如果您在Linux上,'identify'终端命令也会为您提供维度,然后您可以以编程方式读取这些维度。

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; 
} 

你将不得不反对的libjpeg链接,加入-ljpeg标志链接。你可以得到更多的信息here