2

この質問は「調査が不十分」で締めくくられる可能性があることを認識しています。しかし、私は2日ほどグーグルで検索しましたが、決定的な答えは見つかりませんでした.

C++ で書かれていない、ウィンドウを生成するアプリケーションがあります。このアプリケーションは、DLL との C インターフェイスを持つことができます。今、私は OpenCV の力を利用したいので、拡張する dll から始めました。Ss がアプリケーションとの間で画像データをやり取りすることはほぼ不可能です (c-string と double 値のみを直接渡すことができます。描画にハード ドライブを使用すると、リアルタイムの画像操作には速度が大幅に低下します)。

opencv で画像データをウィンドウに直接描画できるようにすることを検討しています。ウィンドウハンドルを簡単に取得できるので、openCVにデータを他のウィンドウに「オーバー」させたり、他のウィンドウに描画させたりすることは可能でしょうか? これはどのライブラリ(FFMPEGなど)でも可能ですか?

4

1 に答える 1

3

はい、可能ですが、理想からはほど遠いです。GDIを使用して、他のウィンドウの上に描画できます(IplImageをHBITMAPに変換するだけ です)。もう1つの手法は、このような描画をフチなしのレイヤードウィンドウで行うことです。

より簡単なアプローチは、両方のアプリケーションを所有しているため、IplImage標準のCデータ型を使用してそれらの間を通過する関数を作成することです。結局のところ、IplImageこれらの標準型から構築されたデータ型に他なりません。

IplImage5つの標準パラメータに分解する方法は次のとおりです。

  • 画像のサイズ(int、int)(幅/高さ);
  • 画像の(int)ビット深度。
  • チャネルの数(int )。
  • そして、画像の(unsigned char *)ピクセル。

反対側でこれらのパラメータを受け取った後、あなたは疑問に思うかもしれません:どうすればIplImage最初から組み立てることができますか?呼び出しcvCreateImageHeader()の後にcvSetData()

于 2013-02-01T18:05:45.353 に答える