У нас было изображение, загруженное в открытое CV из некоторого сжатого файла JPG или PNG. Это было действительно большое. У нас была определенная рентабельность по этому поводу: от (2000: 2000) до (2100: 2100) (квадрат 100x100). Мы закрыли изображение. Можем ли мы каким-либо образом открыть, что ROI снова не загружает полный файл изображения в память? Если да, что мы будем делать? Любые метаданные для сохранения?Как открыть некоторую область из файла сжатого изображения, не загружая полный файл изображения в память?
ответ
Если вы работаете с растровым или другим форматом, в котором хранятся биты в виде обычного шаблона, то да, вы можете сделать это, расшифровав файл самостоятельно и только прочитав смещения, которые вам нужны.
Extracting part of a PNG image
Я не уверен, но я думаю, что с JPEG, что это невозможно, так как изображение хранится в виде информации в частотной области означает, что вы должны были бы все данные, чтобы произвести какой-либо один часть изображения в оригинальной детали.
Или, как я предложил в комментариях, вы можете просто сохранить ROI, если у вас есть это в памяти, если у вас ограниченное количество ROI, и вы знаете, какие из них вам понадобятся позже (или даже если вы не знаете которых, если их не так много).
Какой из этих звуков подходит для вас? Я читал BMP в какой-то момент, но не имею кода под рукой. Я мог бы выкопать opencv-код, если вам это нужно для сохранения ROI. Это довольно легко.
У нас была такая же проблема, и в результате мы использовали GDAL (http://www.gdal.org) для загрузки изображений, а затем преобразовали их в IplImage.
Grate - я бы с удовольствием использовал его, если бы это помогло!) Любые рекомендации о том, где искать GDAL?) – myWallJSON
Я не был ведущим программистом в проекте, но вы можете проверить приведенную выше ссылку и немного изучить библиотеку –
Сколько ROI вы проверяете? Не могли бы вы просто сохранить рентабельность инвестиций в изображение, если знаете, что вам это нужно? – KobeJohn