IplImage を Qt GUI に統合して表示する最良の方法は何ですか? これは OpenGL を使用して実行できますか? はいの場合、どのように?
1 に答える
さて、私はここで自分の質問に答えています。
私は 1 年前から OpenCV を使用しており、ビデオ ファイルを開いてストリーミングするコードを何度も書かなければなりませんでした。
最近、私は Qt を使用して高レベルの GUI を提供しており、OpenGL を使用して Qt GUI に IplImages を表示するソリューションを思いつきました (これには多くの時間を費やしましたが、最終的に成功しました)。OpenCV は Qt の highgui サポートでビルドできますが、私は OpenGL について少し学び、それを自分のアプリケーションで使用することに熱心でした。
アプリケーションのビデオを実行するための基本的なフレームワークが必要な人にとって役立つと思いました。
この基本的なフレームワークは、ビデオ コンテンツ分析、顔認識、パターン認識などの幅広いアプリケーションで使用できます。より広い意味では、これは基本的に音声サポートのないビデオ プレーヤーです。したがって、必要に応じてオーディオ サポートを追加し、これをビデオ プレーヤーにすることができます。opencv は ffmpeg を使用してビデオを再生するため、ほぼすべての形式を再生できます。私は非常に広範囲に使用する同じ C++ ライブラリを作成しました。
主なクラスは次のとおりです。
QVideo : The main widget, providing functionality to open a video/rtsp stream and play it
QIplImage: The core display widget. It's a QGLWidget which renders an IplImage
BackgroundWorker: This is a thread which runs in the background to retrieve images
from the stream. It is mandatory to run the frame grabber in a background thread,
otherwise it interferes with the GUI thread. All the image processing can be done in
this thread
ソースコードが提供されているので、必要に応じて変更できます。ライブラリがインストールされると、次のように qt アプリケーションで使用できます。
//Create an object
QVideo* video=new QVideo("Name",);
//set geometry (optional)
setCentralWidget(video);
ライブラリをビルドするには、qt と opencv (ffmpeg サポートあり) がインストールされている必要があります。ライブラリは、アーキテクチャに基づいて /usr/lib または /usr/lib64 にインストールされます。インクルード ファイルは /usr/local/include にインストールされます。もちろん、必要に応じて、これらすべてをプロジェクト ファイルで変更できます。インストールするには、パッケージを解凍し、qmake、make、および sudo make install を実行するだけです。注: プロジェクトは UNIX 用に構成されており、Windows ビルド用に変更する必要があります。詳細については、メッセージをお送りください。