OpenCV画像 + matplotlibグラフを合わせて表示する
OpenCV映像とMatplotlibグラフを一つの画面で表示させてみたい。
というのをやってみました。
経緯
OpenCVで動画を解析し、その結果をMatplotlibで表示してみたものの、
更にそれを一画面で表示してみたくなったので、それをやってみました。
OpenCVでMatplotlibのグラフの表示は出来なさそうなので、
逆で、MatplotlibでOpenCVの映像を表示する形になりました。
技術要素と参照
- MatplotlibのレイアウトはGridSpecが便利。実際使ってみて確かに使い易かった。
- plt.imshow() 使えば OpenCV の画像も表示可能。
サンプル
サンプルとして、猫画像集めてきて、画像のヒストグラムを取ってみるものを作成してみました。
ソースコードは github。
github.com
猫画像はVisual Geometry Group - University of Oxfordを使用しています。
実行するとこんな感じ。アニメーションで順次グラフが更新されます。
あとはパディングとかオフセット設定すればきれいに見えるかと。
まとめとか
- GridSpec便利。
- 今までテキトーにMatplotlib使っていたけど、しっかり使うと凄いのが (片鱗だけ) 分かった。
- 描画コストはそれなりにかかるっぽいので、重い映像の描画には向かないっぽい。
- そういう意味では、わざわざ表示をくっ付けなくても良いかもしれない。。