私はいくつかのコンピューター ビジョン アルゴリズムに取り組んでおり、numpy 配列が各ステップでどのように変化するかを示したいと思います。
コードの最後に単純なものがある場合imshow( array )
、ウィンドウが表示され、最終的な画像が表示されるようになりました。
しかし、私がやりたいことは、反復ごとに画像が変化するときに imshow ウィンドウを更新して表示することです。
たとえば、私はやりたい:
import numpy as np
import matplotlib.pyplot as plt
import time
array = np.zeros( (100, 100), np.uint8 )
for i in xrange( 0, 100 ):
for j in xrange( 0, 50 ):
array[j, i] = 1
#_show_updated_window_briefly_
plt.imshow( array )
time.sleep(0.1)
問題は、この方法では、Matplotlib ウィンドウがアクティブ化されず、計算全体が終了したときにのみアクティブになることです。
ネイティブの matplotlib と pyplot の両方を試しましたが、結果は同じです。コマンドをプロットするために.ion()
スイッチを見つけましたが、ここでは機能していないようです。
Q1. numpy 配列 (実際には uint8 グレースケール画像) への更新を継続的に表示する最良の方法は何ですか?
Q2. 動画の例のように、アニメーション機能でこれを行うことは可能ですか? ループ内で関数を呼び出したいのですが、アニメーション関数でこれを実現する方法がわかりません。