Как в opencv преобразовать кадр, хранящийся в объекте класса Mat при получении кадра с веб камеры в jpeg? С++

Как в opencv преобразовать кадр, хранящийся в объекте класса Mat при получении кадра с веб камеры в jpeg не выводя в файл? Мне нужно отправлять полученный jpeg по сети, по этому нужно получить его внутри программы и знать размер байтового буфера, как это сделать?

#include <opencv2/core/utility.hpp>
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;

int main() {
    Mat frame;
    VideoCapture cap;
    cap.open(0);
    cap >> frame;
    return 0;
}

Что нужно добавить в следующий код?


Ответы (1 шт):

Автор решения: Andrej Levkovitch

Для этого можно использовать функцию cv::imencode из модуля imgcodecs. Использование тривиальное:

std::vector<uchar> buf;
cv::imencode(".jpeg", image, buf);

Есть еще и четвертый аргумент: параметры сериализации, в данном случае они пустые

→ Ссылка