web-dev-qa-db-ja.com

openCVビデオをHTML Webページにストリーミングするにはどうすればよいですか?

簡単なオブジェクト検出を提供するためにWebカメラを搭載するロボットを作成しています。とりあえず、ロボットにホストされているWebページにビデオをストリーミングし、別のデバイスから表示できるようにしたいと考えています。簡単なテストスクリプトをPython(最終的にはC++に移行します)で記述しました。これにより、Webカメラからストリームを取得し、そこから必要なことをすべて実行できます。 。その場合の問題は、アプリの実行中はビデオをファイルに書き込むことができず、スクリプトを終了した後にのみファイルに書き込むことです。既にWebサーバーが実行されており、HTMLで基本的なコードを記述できますファイルからビデオをホストすることもできます。

要約すると、Pythonおよび/またはC++のopenCV2は、openCVのみを使用してビデオをライブストリーミングできますか?できない場合は、CVキャプチャオブジェクトまたはMatオブジェクトを取得して書き込むことをお勧めします。それをWebページに配置できるストリームに追加しますか?HTMLでは、タグを使用してビデオをストリーミングするのに適していますか?

アドバイスありがとうございました、私は得ることができるすべてのポインター*を使用できます!

私が提供したものよりも明確化/コードの投稿/説明が必要な場合は、お問い合わせください。

20
PyroAVR

OpenCVおよびPython=からのフレームのストリーミングの問題は、次のスレッドで対処されています: Pipe raw OpenCV images to FFmpeg

これは私にとってはうまくいきませんでしたが、彼らはそれが彼らのためにうまくいったと主張しました。

私の場合に機能しない理由は、一部の出力フレームでは、capture.pyのstdoutへの出力とFFMPEGへの入力の間のどこかで追加のバイトが追加または失われたためです。したがって、バイト数はフレーム数と一致しません。なぜそうなのか、よくわかりません。 Windows 7を使用しました。

これを試してみて、あなたの経験を聞かせてください。また、cv2を使用して、capture.pyの修正バージョンを試しましたが、同じ理由で失敗しました。

3

thisthis を読んでみてください。

したがって、基本的には、OpenCVを使用してフレームをキャプチャし、ストリーミングプロトコルに適合する特定の形式にフレームをパックしてから、サーバーからHTML5を使用してページに配置する必要があります。 cv :: Matをパックするには、VLCまたはFFMepgを使用する必要がある場合があります。これがお役に立てば幸いです。

1
tomriddle_1234

ラボの条件下では、完全な画像を送信します

あなたはラボの状況下にいるようですので、単純でありながら使いやすいソリューションがあります。WebSocketを使用してBase64でPNGをストリーミングするだけです。クライアント側(Webブラウザー)では、base64イメージを受け取り、<img>srcに直接ロードします。低速ですが、ラボのシナリオで非常にうまく機能します。

0
Ariel M.