Pythonのスクリプトを理解する手っ取り早い方法は、サンプルプログラムを動かしてみることである。
関数の引数や戻り値の意味するものがすぐにはわからなくても、Pythonの統合環境Spyderならば、すぐに変数とデータの種類、その値とを見ることができる。
if __name__ == '__main__'
:
のブロックの中に出てきた変数は、このブロックが実行され終わってもPythonインタプリタ上に変数が残っている。
そのため、その変数をインタプリタ上でprintすれば値に参照できる。
それどころか、Spyder統合環境ではVariable Explorerを表示させるとインタプリタのメモリ上にある全ての変数のtype, size, valueが表示される。
arrayからなるリストのようなデータ構造でも表示される。
import pylab
とした後に
pylab.imshow(img)
あるいは、次のようにする。
import matplotlib.pyplot as plt
plt.imshow(img)
(たとえば、ステレオ画像から視差画像を得たときに、アルゴリズムによっては視差の値が整数だし、別のアルゴリズムでは浮動小数点になる。あるアルゴリズムでは、ちょうど良い初期値のときにはうまくいくが、別の初期値ではうまくいかない。そういったことが試してみればわかる。)
とSpyderのIPythonコンソールに打ち込むことで
オリジナルのスクリプトに手を加えることなしに動作後の変数について、それが画像ならば画像として表示させることもできます。
Pythonでは
出力 = 関数(入力の引数)
なので、データの依存性がわかりやすいこととあわせて
アルゴリズムの理解に向いています。
スクリプト言語なので、実行させたスクリプトと実行結果に乖離を生じない点も
アルゴリズムの理解に向いています。
OpenCVのC++のサンプルプログラムを動かしてみるよりは、
まずはOpenCVのPythonでのサンプルを動かしてみるのがお勧めです。
そして、モジュールの関数の入出力を理解したときには、
モジュールのC++のソースコードを読むのがいいと思っています。
まとめ
・Spyder統合環境のVariableExplorerで変数の型、大きさ、値が確認できる。
・スクリプトの実行後にインタプリタ上に変数が残っている時には、
IPythonのコンソール上で
import matplotlib.pyplot as plt
plt.imshow(img)
として値の確認ができる。