v4l2ループバックはopenCVでうまく機能しますが、OBSでは出力が奇妙です。

v4l2ループバックはopenCVでうまく機能しますが、OBSでは出力が奇妙です。

私はコンピュータサイエンスの学生であり、ウェブカメラのビデオストリームをASCIIアートに出力するプロジェクトを作成しようとしています。

これを行うには、v4l2からイメージをインポートします。次に、OpenCVを使用して画像をデコードします(これより簡単な方法は見つかりません)。

次に、openCVマットからデータを取得し、新しいバッファの画像からASCIIアートを作成します。その後、v4l2のバッファからデータを転送しますが、obsでv4l2を使用して入力をループバックすると、出力は本当に奇妙になります(図を参照)。

opencvを使って新しいマットに画像を出力してみましたが、画像が正しく出力されました。私は本当に何が起こっているのか、なぜ起こるのか理解していません。私はOBSの代わりにディスコードを試しましたが、出力は完全に黒です。

どんな助けでも大変感謝します。よろしくお願いします。

(私のコードはすべてgithubを介して提供されています。スタックオーバーフローではないので、投稿する必要があるかどうかわかりません。必要に応じて教えてください。リンクを追加します)

予想出力(OpenCVから取得): 期待される出力

OBS出力: ここに画像の説明を入力してください。

答え1

これを行うには、v4l2からイメージをインポートします。次に、OpenCVを使用して画像をデコードします(これより簡単な方法は見つかりません)。

あなたはそれを使用することができますlibcaca

libcacaは、画像をカラーASCIIアートに変換するソフトウェアライブラリです。これには、ライブラリ自体はもちろん、cacaview(ターミナルエミュレータ内で動作する画像ビューア)やimg2txt(画像を他のテキストベースの形式に変換することができます)を含むいくつかのプログラムが含まれています。

たとえば、Webカメラがある場合、/dev/video1このコマンドはASCIIアートで完成したライブフィードを表示します。

ffmpeg -i /dev/video1 -pix_fmt rgb24 -f caca -

彼らホームページライブラリーと設定できるパラメーターに関する詳細情報があります。

関連情報