我正在使用OpenCV並正在讀取千兆字節的圖像 - 太多以至於無法一次裝入內存。但是,我需要初始化一些需要圖像尺寸的基本結構。目前,我正在使用imread
,然後立即釋放圖像,這實在是效率低下。OpenCV圖像尺寸沒有讀取整個圖像
有沒有辦法在不讀取整個文件的情況下使用opencv獲取圖像尺寸?如果不是,你可以建議另一個庫(最好是輕量級的,因爲這是所有它將被用於)可以解析頭文件?理想情況下,它至少支持與OpenCV一樣多的格式。
我正在使用OpenCV並正在讀取千兆字節的圖像 - 太多以至於無法一次裝入內存。但是,我需要初始化一些需要圖像尺寸的基本結構。目前,我正在使用imread
,然後立即釋放圖像,這實在是效率低下。OpenCV圖像尺寸沒有讀取整個圖像
有沒有辦法在不讀取整個文件的情況下使用opencv獲取圖像尺寸?如果不是,你可以建議另一個庫(最好是輕量級的,因爲這是所有它將被用於)可以解析頭文件?理想情況下,它至少支持與OpenCV一樣多的格式。
我不認爲這是可能的,直接在opencv。
雖然沒有在文檔中指定,但是Java的ImageReader.getHight(和getWidth)只分析圖像標題,而不是整個圖像。
或者here是一個合理的外觀輕量級庫,它絕對只檢查標題,並支持大量的圖像格式。
最後,如果您在Linux上,'identify'終端命令也會爲您提供維度,然後您可以以編程方式讀取這些維度。
你可以使用升壓吉爾:
#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。