OpenCV: imdecode() — функция декодирует изображение из буфера памяти


Как сохранять сжатую картинку в буфер с помощью функции OpenCV imencode() уже узнали. А как же сделать обратную операцию?

Разумеется, с помощью функции cv::imdecode() .

С++:

Mat cv::imdecode ( InputArray buf, int flags )

Python:

cv.imdecode( buf, flags ) -> retval

Считывает изображение из буфера в памяти.

Функция imdecode считывает изображение из указанного буфера в памяти. Если буфер слишком короткий или содержит недопустимые данные, функция возвращает пустую матрицу.

Поддерживаемые форматы и флаги такие же, как и у функции cv::imread().

Параметры
buf — входной массив или вектор байтов.
flags — те же флаги, что и в cv::imread, cv::ImreadModes.

Примечание
В случае цветных изображений, декодированные изображения будут иметь каналы, сохраненные в порядке B G R.

Рассмотрим как можно использовать эту функцию для считывания  изображения предварительно закодированного с помощью base64 (чтобы считать картинку из json-файла labelme).

def get_image_from_base64(img_base64_data):
    # return image array from base64 data
    data = np.frombuffer(base64.b64decode(img_base64_data), np.uint8)
    decimg = cv2.imdecode(data, cv2.IMREAD_COLOR)
    return decimg

Вот и всё. Теперь мы умеем сжимать и разжимать картинки на лету.

Ссылки

По теме


Добавить комментарий

Arduino

Что такое Arduino?
Зачем мне Arduino?
Начало работы с Arduino
Для начинающих ардуинщиков
Радиодетали (точка входа для начинающих ардуинщиков)
Первые шаги с Arduino

Разделы

  1. Преимуществ нет, за исключением читабельности: тип bool обычно имеет размер 1 байт, как и uint8_t. Думаю, компилятор в обоих случаях…

  2. Добрый день! Я недавно начал изучать программирование под STM32 и ваши уроки просто бесценны! Хотел узнать зачем использовать переменную типа…

3D-печать AI Android Arduino Bluetooth CraftDuino DIY IDE iRobot Kinect LEGO OpenCV Open Source Python Raspberry Pi RoboCraft ROS swarm ИК автоматизация андроид балансировать бионика версия видео военный датчик дрон интерфейс камера кибервесна манипулятор машинное обучение наше нейронная сеть подводный пылесос работа распознавание робот робототехника светодиод сервомашинка собака управление ходить шаг за шагом шаговый двигатель шилд юмор

OpenCV
Робототехника
Будущее за бионическими роботами?
Нейронная сеть - введение