Подтвердить что ты не робот

Как передать поток openCV на HTML-страницу?

Я создаю робота, на котором будет веб-камера, чтобы обеспечить некоторое простое обнаружение объекта. На данный момент я хотел бы просто передать видео на веб-страницу, размещенную на роботе, и иметь возможность просматривать ее с другого устройства. Я написал простой тест script в Python (я в конечном итоге перейду на С++, мой язык выбора), который может получить поток из моей веб-камеры, а затем делать все, что мне нужно от него. Проблема в том, что я не могу записать видео в файл во время работы приложения, он записывает только файл после выхода из script. У меня уже есть веб-сервер, и я могу написать базовый код в HTML для размещения видео из файла, и все это работает.

Подводя итог: Является ли openCV2 в Python и/или С++ способным воспроизводить видео, используя только openCV? Если нет, то в какой библиотеке вы бы порекомендовали, чтобы я попытался взять объект захвата CV или объект Mat и записать его в поток, который затем я могу разместить на веб-странице? В HTML, есть ли тег хорошая идея для потокового видео с?

Большое спасибо за совет, я могу использовать все указатели * Я могу получить!

Если вам нужно что-то уточненное/отправленное код/​​объяснения дальше, чем то, что я дал, спросите, и я сделаю это!

4b9b3361

Ответ 1

Вопрос о потоковых кадрах из OpenCV и Python был рассмотрен в следующем потоке: Образцы открытых изображений OpenCV для FFmpeg

Это не сработало для меня, но они утверждают, что это было для них.

Причина, по которой это не работает в моем случае, кажется, что для некоторых выходных кадров добавлены или потеряны дополнительные байты, где-то между выходом на stdout в capture.py и входом в FFMPEG. Следовательно, количество байтов не соответствует количеству кадров. Я не знаю, почему это так. Я использовал Windows 7.

Мне будет интересно услышать, что вы думаете, если попробуете это. Я также попробовал модифицированную версию capture.py с помощью cv2 и не смог по тем же причинам.

Ответ 2

Попробуйте прочитать этот и .

Итак, в основном вы должны использовать OpenCV для захвата фреймов и упаковывать их в определенные форматы, соответствующие потоковому протоколу, а затем с вашего сервера используйте HTML5, чтобы поместить его на страницу. Возможно, вам понадобится использовать VLC или FFMepg для упаковки cv:: Mat. Надеюсь, это будет полезно.

Ответ 3

В лабораторных условиях вы отправляете полные изображения

Похоже, вы находитесь в лабораторных условиях, поэтому есть упрощенное, но пригодное для использования решение, просто поместите PNG в Base64 с помощью Websockets. На стороне клиента (веб-браузер) вы получаете только изображения base64 и загружаете их непосредственно в src <img>. Он работает для лабораторных сценариев очень хорошо, хотя и медленный.