WindowsマシンでVisual C++フォームとOpenCVを使用して画像処理アプリケーションを作成しました。すべてがうまくいくように見えますが、画像を表示するのは非常に遅く、わずか数フレームです。私は30程度になることを望みます。私は現在、標準imshow(...)
とそれに続くwaitkey(1)
を使用しています。openCVを使用した画像の高速表示
私の質問です:画像をメモリからモニタに取り込むためのより良い(つまり速い)方法がありますか? openCVで使用されるMat構造体は、基本的に、unsigned char
値の連続ブロックを指し示すファンシーヘッダです。
編集: 私はVS2013プロファイラで私のコードをテストし、それは私がimshowを/ waitkeyで実行時間の50%を費やしていたと主張。
私はOpenCV Q/Aフォーラムでこれについていくつかの議論をしてきました。彼らはいつも「デバッグ以外はimshowを使用すべきではありません」と終わりましたが、誰も使用することを提案していないので、ここで試してみてください。あなたが持っているものを見なければ
男
「imshow」と「waitKey」がボトルネックであるという結論にどのように到達しましたか?あなたのコードをプロファイルしましたか?または少なくともそれは時間ですか?リリースビルドでテストしていますか? –
[この小さなテスト](http://pastebin.com/PFPgzQn0)を実行すると、適切なnVidiaカードを搭載したi7-4930Kで1600x1200イメージの約55FPSが得られます。自分で画像を描画したい場合は、OnPaintハンドラのBitBltが最速です。私はWindowsフォームを使用していませんが、Windows APIに非常に近いWTLで使用する[スニペットを入手しました](http://pastebin.com/GkDQD3AV)です。あなたの目的に合うようにそれを修正するのはあまりにも厳しくすべきではありません。 –
リリースモードはビット対デバッグに役立ちます(自分自身を考えていたはずです)、 –