Как загрузить изображение в формате png, полученное через сообщение http, в формат OpenCV IplImage - PullRequest
1 голос
/ 09 июля 2010

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

Изображение в формате png.Он получен в виде байта [] через POST с использованием PHP.Я должен преобразовать этот байт [] в формат OpenCV IplImage.Какие шаги я должен выполнить, чтобы это сделать?

То, как я сейчас это делаю, - это чтение изображения и сохранение его на жестком диске, а также анализ пути к файлу для функции OpenCV cvLoadImage ().Я полагаю, что выполнение способа, описанного в предыдущем абзаце, намного эффективнее, чем это.

Или есть ли способ непосредственно проанализировать байт [] в какой-либо функции OpenCV, не пытаясь преобразовать его в формат IplImage самостоятельно?

Спасибо ..

1 Ответ

1 голос
/ 12 июля 2010

Я считаю, что это невозможно.

Байты, которые вы получаете из запроса POST, являются фактическими байтами, хранящимися в файле. Поскольку PNG является сжатым форматом, эти байты должны быть сначала распакованы. (IplImage хранит несжатые байты изображения)

Вы можете написать процедуры распаковки PNG самостоятельно или использовать некоторую библиотеку (проверьте libpng).

Получив распакованные байты, вам необходимо настроить структуру IplImage.

используйте cvCreateImageHeader для создания изображения соответствующего размера и глубины и установите указатель image-> data на распакованные данные.

Убедитесь, что распакованные данные находятся в формате BGR ... с чередованием (один синий байт, один зеленый байт, один красный байт и т. Д.).

...