#java #python #scala #opencv
#java #python #scala #opencv
Вопрос:
Я извлекаю некоторые изображения через HTTP:
val ostream = new ByteArrayOutputStream()
ImageIO.write(imageurl, imageType, ostream)
val istream = new ByteArrayInputStream(ostream.toByteArray)
(на самом деле это scala, но сам этот код использует библиотеки Java, поэтому в нем нет специфичной для scala магии).
Затем я нажимаю istream
на базу данных (в моем случае это GridFS, которая является частью MongoDB).
И теперь мне нужно использовать его image (bytearray) в OpenCV (с привязками к python):
db = Connection(myserver,myport).DB
fs = GridFS(db)
bytearray = fs.get(id).read()
Учитывая это, как я могу создать Mat
для использования в функциях OpenCV?
Ответ №1:
Комментарии:
1. Он существует в native C OpenCV, но я не могу найти
imdecode
ссылку на привязку python ни в коде.2. @om-nom-nom Какую версию OpenCV вы используете? Эта функция доступна с версии OpenCV 2.2. Без этой функции вы можете только сохранить изображение во временный файл и прочитать его с помощью LoadImage или декодировать изображение с помощью другой библиотеки.
3. 2.1.0-2 (python-opencv) из репозитория gijzelaar. Я видел более новые пакеты opencv, но в этом репозитории нет новых привязок python (я знаю, что могу создать opencv самостоятельно, используя код с willowgarage или какого-либо другого сайта, но я бы предпочел не делать этого, если есть другой способ). Запись образов на диск и последующая замена их обратно будут работать, но это значительно снизит производительность.