Отправьте изображение из OpenCV 3 в Cognitive Face API с помощью C++ REST SDK.C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Отправьте изображение из OpenCV 3 в Cognitive Face API с помощью C++ REST SDK.

Сообщение Anonymous »

Я хочу использовать Microsoft Face API из приложения на C++. SDK cpprest позволяет мне отправлять URL-адрес изображения или двоичные данные изображения. Проблема в том, что мое изображение — это не файл на диске, а cv::Mat в памяти. Я пытался сериализовать его через поток строк, но метод запроса жалуется, поскольку принимает только некоторые строки и istream.

Следующий код хорош при открытии изображения из файла:

Код: Выделить всё

file_stream::open_istream(filename)
.then([=](pplx::task previousTask)
{
try
{
auto fileStream = previousTask.get();

auto client = http_client{U("https://api.projectoxford.ai/face/v0/detections")};

auto query = uri_builder()
.append_query(U("analyzesFaceLandmarks"), analyzesFaceLandmarks ? "true" : "false")
.append_query(U("analyzesAge"), analyzesAge ? "true" : "false")
.append_query(U("analyzesGender"), analyzesGender ? "true" : "false")
.append_query(U("analyzesHeadPose"), analyzesHeadPose ? "true" : "false")
.append_query(U("subscription-key"), subscriptionKey)
.to_string();

client
.request(methods::POST, query, fileStream)
...
}
}
Здесь file_stream используется для открытия файла.
Я попробовал сериализовать свой Mat следующим образом:

Код: Выделить всё

    // img is the cv::Mat
std::vector buff;
cv::imencode(".jpg", img, buff);
std::stringstream ssbuff;
copy(buff.begin(), buff.end(), std::ostream_iterator(ssbuff,""));
Эта сериализация работает, поскольку я могу декодировать ее и перестроить изображение.

¿Как я могу отправить на сервер изображение opencv Mat через клиент?>

Подробнее здесь: https://stackoverflow.com/questions/429 ... c-rest-sdk
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»