2017-08-04 62 views
0

我一直在尋找關於這個問題的日子,並沒有找到任何解決的線程。 我需要的簡單openCV對大圖像或巨大圖像的imread限制Mat bug#3258

src = imread(filepath, 1); 

手段我使用Visual Studio 2013,C++裝載相當大的圖像(4 GB及以後,無論是.TIFF/.PNG)轉換成OpenCV的代碼。

儘管我使用的是96Gb-RAM機器,但在通過OpenCV的「imread」函數加載這些大圖像時,運行時警報即將出現。一直嘗試使用越來越小的圖像/文件,直到它們確實被讀取/加載,所以我們知道這是一個內存/分配的問題,因爲較小的圖像被正確加載和處理。

控制檯throughing以下信息,通過提取「捉(...)」

OpenCV Error: One of arguments' values is out of range (The total matrix size does not fit to "size_t" type) in cv::setSize, file C:\builds\2_4_PackSlave-win32- vc12-shared\opencv\modules\core\src\matrix.cpp, line 126

在另一方面,VS2013顯示以下警報,同時運行(無任何編譯問題):

Unhandled exception at 0x76385608 in poblacion.exe: Microsoft C++ exception: cv::Exception at memory location 0x00C7EA70

也爭論「沒有符號加載」。我們在Win32,Debug模式下編譯。

這個問題是錯誤#3258,但沒有找到解決的線程,只是討論regarging的size_t類型導致沒有明確的解決方案...應該有一種閱讀大圖像的方式,而無需通過openCV庫...

難道這發生在那裏誰能幫助我們?我會傳播任何令人滿意的解決方案。

THANX提前!

亞歷

回答

1

size_t尺寸不同平臺Win32x64之間。錯誤告訴矩陣尺寸不適合size_t類型。

考慮切換到x64配置,您的問題應該消失。

除此之外,Win32配置不適用於預計每個進程使用> 4GB RAM的應用程序。 這意味着您將無法使用運行Win32應用程序的96GB RAM的機器的全部功能。