私はコンピュータサイエンスの学生であり、ウェブカメラのビデオストリームをASCIIアートに出力するプロジェクトを作成しようとしています。
これを行うには、v4l2からイメージをインポートします。次に、OpenCVを使用して画像をデコードします(これより簡単な方法は見つかりません)。
次に、openCVマットからデータを取得し、新しいバッファの画像からASCIIアートを作成します。その後、v4l2のバッファからデータを転送しますが、obsでv4l2を使用して入力をループバックすると、出力は本当に奇妙になります(図を参照)。
opencvを使って新しいマットに画像を出力してみましたが、画像が正しく出力されました。私は本当に何が起こっているのか、なぜ起こるのか理解していません。私はOBSの代わりにディスコードを試しましたが、出力は完全に黒です。
どんな助けでも大変感謝します。よろしくお願いします。
(私のコードはすべてgithubを介して提供されています。スタックオーバーフローではないので、投稿する必要があるかどうかわかりません。必要に応じて教えてください。リンクを追加します)
答え1
これを行うには、v4l2からイメージをインポートします。次に、OpenCVを使用して画像をデコードします(これより簡単な方法は見つかりません)。
あなたはそれを使用することができますlibcaca
libcacaは、画像をカラーASCIIアートに変換するソフトウェアライブラリです。これには、ライブラリ自体はもちろん、cacaview(ターミナルエミュレータ内で動作する画像ビューア)やimg2txt(画像を他のテキストベースの形式に変換することができます)を含むいくつかのプログラムが含まれています。
たとえば、Webカメラがある場合、/dev/video1
このコマンドはASCIIアートで完成したライブフィードを表示します。
ffmpeg -i /dev/video1 -pix_fmt rgb24 -f caca -
彼らホームページライブラリーと設定できるパラメーターに関する詳細情報があります。