Повернуть jpeg изображение на 90 градусов

89
30 марта 2022, 11:20

Имеется бинарный буффер jpeg:

std::vector<unsigned char> buffer;

Как из него получить аналогичный буффер, но соответствующий jpg изображению, повёрнутому на 90 градусов влево (или вправо, это несущественно)?

Поворот должен производиться не ресайзом, не обрезкой, и изменением размеров, то есть поворот изображения 100 на 200 будет изображением 200 на 100.

Если это можно легко сделать без дополнительных библиотек, было бы идеально. Возможно это решается с помощью OpenCV (но я пока не разобрался, как именно), если кто-нибудь подскажет как с ней сделать - тоже хорошо.

В вопросе упомянут угол, потому что поворот на 90 градусов это полностью обратимая операция (на уровне матриц), и возможно для такой задачи необязательно задействовать методы поворота на произвольный угол.

Answer 1

Это можно сделать с помощью OpenCV:

#include <opencv2/core/mat.hpp>
#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
std::vector<unsigned char> buffer = /* ... init of buffer*/;
cv::Mat img = cv::imdecode(buffer, cv::IMREAD_ANYDEPTH | cv::IMREAD_ANYCOLOR);
cv::rotate(img, img, cv::ROTATE_90_CLOCKWISE);
cv::imencode(".jpg", img, buffer);
READ ALSO
Совпадение имен

Совпадение имен

Подскажите, пожалуйста, что Стандарт говорит про следующую ситуацию:

77
Ошибка: QSqlDatabase: QMYSQL driver not loaded на Linux (C++)

Ошибка: QSqlDatabase: QMYSQL driver not loaded на Linux (C++)

В попытках поставить драйвер, перерыл пол-интернетаВ качестве БД использую MySql, но обертка поверх нее XAMPP

69
Условие не видит Ajax результат

Условие не видит Ajax результат

Отправляю определенный пост запрос на сервер и исходя из отправленных данных получаю ответ от сервера Success либо Updated

175
Сортировка MYSQL Order BY с условием

Сортировка MYSQL Order BY с условием

Прошу помочь, как я могу реализовать ORDER BY с условием IF elseесли это возможно! Вот такое нужно преобразовать в нужный синтаксис, если mysql позволяет:

126