Ограничение imread openCV для больших или огромных изображений Mat bug #3258

Я искал несколько дней по этой проблеме и не нашел ни одной решенной темы. Мне нужно загрузить довольно большие изображения (4 ГБ и более, либо .tiff/.png) в код openCV с помощью простого

src = imread(filepath, 1);

Я использую Visual Studio 2013, С++.

Хотя я использую машину с 96 ГБ ОЗУ, при загрузке этих больших изображений с помощью функции «imread» OpenCV появляются предупреждения во время выполнения. Пробовали с меньшими и меньшими изображениями/файлами до тех пор, пока они действительно не будут прочитаны/загружены, поэтому мы знаем, что это вопрос памяти/распределения, поскольку изображения меньшего размера загружаются и обрабатываются правильно.

Консоль обрабатывает следующее сообщение, извлеченное с помощью "catch (...)"

Ошибка OpenCV: значение одного из аргументов выходит за пределы диапазона (общий размер матрицы не соответствует типу «size_t») в cv::setSize, файл C:\builds\2_4_PackSlave-win32-vc12-shared\opencv\modules\ core\src\matrix.cpp, строка 126

С другой стороны, VS2013 показывает следующее предупреждение во время работы (вообще никаких проблем с компиляцией):

Необработанное исключение по адресу 0x76385608 в poblacion.exe: исключение Microsoft C++: cv::Exception в ячейке памяти 0x00C7EA70

также утверждает, что «символы не загружены». Компилируем в Win32, в режиме отладки.

Эта проблема является ошибкой № 3258, но там не обнаружено решенной темы, просто обсуждение типа size_t не приводит к четкому решению... Должен быть способ чтения больших изображений без использования библиотек openCV...

Это случилось с кем-нибудь там, кто может нам помочь?? Выкладываю любое удовлетворяющее решение.

СПАСИБО заранее!

Алекс


person alexsahara    schedule 04.08.2017    source источник


Ответы (1)


size_t размер отличается для Win32 и x64 платформ. Ошибка говорит о том, что размеры матрицы не подходят для типа size_t.

Рассмотрите возможность перехода на конфигурацию x64, и ваша проблема должна исчезнуть.

Кроме того, конфигурация Win32 не подходит для приложений, которые должны использовать > 4 ГБ оперативной памяти на процесс. Это означает, что вы не сможете использовать всю мощность вашего компьютера с 96 ГБ ОЗУ, работающим под управлением Win32 приложения.

person k.v.    schedule 04.08.2017