2017-02-06 8 views
-2

Webカメラから画像を読み込む(別のスレッドで更新する)Python(2.7.13)透視変換を行い、opencv(3.2.0-dev)を使用してライブビデオを画面上のウィンドウに表示します。私は非常に低いFPS(13)を取得して、720x1280の出力イメージをcv2.imshow()で更新します。私がcv2.imshow()への呼び出しを取り除き、ループの残りの部分を同じに保つと、最大75 FPSになります。このイメージをリフレッシュするボトルネックを減らすには、cv2.imshow()の代わりに何を使うべきですか?私は2016年のMacBook Proを専用のグラフィックカードで使用しています。Python/OS-Xで画面上の画像をすばやくリフレッシュして、opencvのimshow()を改善する方法

これにはPyOpenGLが必要ですか?その場合、明確な例が記載されていますか?私はPygameのblit関数を試してみたが、FPSの改善は見られなかった。私はOpenGLを使用するPygletを考えましたが、Pygletで使用されるイベントのパラダイムに精通しておらず、コードを書き直す準備ができていませんでした。ゲームやいくつかの情報筋によれば、それはよく維持されていないと言います

答えて

1

imshow()の機能は、実際にはリアルタイムまたはストリーミングビデオ表示用ではありません。 OpenGLを使用してフレームレートで簡単に実行できますが、かなりの労力が必要です。 PySDLをご覧ください。これは、OpenGLへのより高いレベルのAPIを提供しますが、まだフレームレートのパフォーマンスのために設計されています。

+0

私に正しい方向を教えていただきありがとうございます。この質問への答えには適応できるコードがあります:[リンク](http://stackoverflow.com/questions/18434348/converting-cv2-images-to-pysdl2-surfaces-for-blitting-to-screen#19554202) –

0

n番目の画像のみを表示してみてください。

イメージをディスク(好ましくはssdまたはramdisk)に保存して、自動読み込みをサポートするイメージビューアで表示してみてください。

このようにすべての画像が表示されるわけではありませんが、おそらく監視には十分であり、openCVから貴重な計算時間を節約できます。

+0

または、あなたは縮小されたプレビューで暮らすことができます.. – RuDevel

関連する問題