openCV imread limit для больших или больших изображений Mat bug # 3258

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

src = imread(filepath, 1);

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

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

Консоль пропускает следующее сообщение, извлеченное командой «catch (…)»

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

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

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

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

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

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

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

Alex

0

Решение

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

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

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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]