Как загрузить изображение в формате png, полученное через сообщение http, в формат OpenCV IplImage
Я пишу веб-сервер, который получает изображение и выполняет некоторую обработку и отвечает с результатами.
Изображение в формате png. Он получен в виде байта [] через POST с использованием PHP. Я должен преобразовать этот байт [] в формат OpenCV IplImage. Какие шаги я должен выполнить, чтобы сделать это?
В настоящее время я делаю это, читая изображение и сохраняя его на жестком диске и анализируя путь к файлу для функции OpenCV cvLoadImage(). Я полагаю, что выполнение способа, описанного в предыдущем параграфе, намного эффективнее, чем это.
Или есть способ проанализировать byte[] напрямую в какую-то функцию OpenCV, не пытаясь конвертировать его в формат IplImage самостоятельно?
Спасибо..
1 ответ
Я считаю, что это невозможно.
Байты, которые вы получаете из запроса POST, являются фактическими байтами, хранящимися в файле. Поскольку PNG является сжатым форматом, эти байты должны быть сначала распакованы. (IplImage хранит несжатые байты изображения)
Вы можете написать процедуры распаковки PNG самостоятельно или использовать некоторую библиотеку (проверьте libpng).
Получив распакованные байты, вам необходимо настроить структуру IplImage.
используйте cvCreateImageHeader, чтобы создать изображение соответствующего размера и глубины, и установите указатель image->data на распакованные данные.
Убедитесь, что распакованные данные находятся в формате BGR... с чередованием (один синий байт, один зеленый байт, один красный байт и т. Д.).