2013-11-27 90 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