Matplotlib によるプロット機能¶
Matplotlib が使用可能な環境では、 Pyplot を利用した PyFIE のプロット機能が有効となります。
注釈
Matplotlib 2.0.0 以上のバージョンに対応しています。
PyFIE のプロット機能では、画像オブジェクトや構造体によるプロットを行うことができます。
画像オブジェクトとリージョンオブジェクトのプロット¶
画像オブジェクトとリージョンオブジェクト( FHANDLE )は、 インスタンスメソッドによりプロットを行うことが可能です。
画像(またはリージョン)全体をプロットする場合は imshow()
を、
指定領域のみをプロットする場合は imshow_roi()
を使用してください。
- FHANDLE.imshow(plot_obj=None, layered=False, scale=1.0, grid=False, **kwargs)¶
画像オブジェクトまたはリージョンオブジェクトのプロットを行います。
プロットは Pyplot の
matplotlib.pyplot.imshow()
を用いて行われます。パラメータ plot_obj にはプロット対象とする Pyplot の
Axes
またはFigure
が指定できます。 デフォルトでは None となっており、 この場合カレントAxes
がプロット対象となります。画像オブジェクトが複数チャネルである場合、 パラメータ layered に True を指定することで各チャネルを個別にプロットすることができます。
パラメータ scale にはプロットの倍率を指定します。 例えばデフォルトの 2 倍でプロットを行う場合には 2.0 と指定してください。
パラメータ grid では罫線の表示/非表示を指定します。 True を指定した場合罫線は表示され、 False を指定した場合表示されません。
また、 これら以外のキーワード引数は Pyplot の
matplotlib.pyplot.imshow()
に直接渡されますのでプロットの詳細な指定を行うことができます。- パラメータ:
plot_obj -- プロットを行う
Figure
もしくはAxes
を指定します。 None を指定した場合はカレントAxes
が使用されます。layered -- 複数チャネル画像の場合 True を指定すると、 チャネル毎にプロットが行われます。 リージョンの場合は無視されます。
scale -- プロットの倍率を指定します。
grid -- 罫線の表示/非表示を指定します。
kwargs --
matplotlib.pyplot.imshow()
に渡すキーワード引数を指定します。
- 戻り値:
プロットが行われた
Axes
を返します。 layered に True を指定し複数チャネル毎のプロットが行われた場合はAxes
のリストを返します。
- FHANDLE.imshow_roi(x, y, w=10, h=10, plot_obj=None, layered=False, scale=1.0, grid=False, **kwargs)¶
画像オブジェクトまたはリージョンオブジェクトにおける指定範囲のプロットを行います。
パラメータ x 及び y で処理範囲の左上座標を、 w 及び h で処理範囲のサイズを指定します。
これ以外のパラメータに関しては
FHANDLE.imshow()
と同様となります。- パラメータ:
x -- 処理範囲の左上 x 座標
y -- 処理範囲の左上 y 座標
w -- 処理範囲の幅
h -- 処理範囲の高さ
plot_obj -- プロットを行う
Figure
もしくはAxes
を指定します。 None を指定した場合はカレントAxes
が使用されます。layered -- 複数チャネル画像の場合 True を指定すると、 チャネル毎にプロットが行われます。 リージョンの場合は無視されます。
scale -- プロットの倍率を指定します。
grid -- 罫線の表示/非表示を指定します。
kwargs --
matplotlib.pyplot.imshow()
に渡すキーワード引数を指定します。
- 戻り値:
プロットが行われた
Axes
を返します。 layered に True を指定し複数チャネル毎のプロットが行われた場合はAxes
のリストを返します。
構造体のプロット¶
一部の PyFIE 構造体インスタンスは、 その構造体が表現する形状をプロットすることが可能です。
例えば点を表す構造体である PNT_T
や DPNT_T
などに対しては点のプロットが可能であり、
矩形を表す構造体である BOX_T
や DBOX_T
などに対しては矩形のプロットが可能です。
このような構造体のプロットは、 構造体のインスタンスメソッドである _struct_base.plot()
にて行います。
またこのようなプロット機能をもつ構造体は、 その構造体に対する PyFIE ポインタ及び PyFIE 配列からもプロットを行うことが可能です。
構造体ポインタのプロットは、 構造体ポインタのインスタンスメソッドである _struct_base.PTR.plot()
にて行います。
このときプロットする構造体の個数をパラメータにて指定する必要があります。
構造体配列のプロットは、 構造体配列のインスタンスメソッドである _struct_base.ARRAY.plot()
にて行います。
このとき配列の要素数だけ構造体のプロットが行われます。
注釈
_struct_base は PyFIE 構造体共通の基底クラスとなります。
注釈
バージョン 3.6.0.1 の PyFIE において、プロット可能な構造体は下記の通りです。
点のプロット
PNT_T
SPNT_T
DPNT_T
FPNT_T
QEDGE_T
DEDGE_T
F_EDGE
F_DEDGE
DPNTRGBA_T
FPNTRGBA_T
直線のプロット
DLINE_T
F_LH_LINE
線分のプロット
SGMT_T
DSGMT_T
矩形のプロット
BOX_T
DBOX_T
サーチ結果のプロット
F_GS_RESULT
F_SEARCH_RESULT
- classmethod _struct_base.is_plottable()¶
その構造体クラスがプロット可能であるかを判定します。
- 戻り値:
プロット可能な場合は True を返します。 そうでない場合は False を返します。
- _struct_base.plot(plot_obj=None, pattern_obj=None, **kwargs)¶
構造体インスタンスのプロットを行います。
パラメータ plot_obj にはプロット対象とする Pyplot の
Axes
またはFigure
が指定できます。 デフォルトでは None となっており、 この場合カレントAxes
がプロット対象となります。パラメータ pattern_obj はサーチ結果のプロットのみで有用なパラメータです。 サーチで使用されたパタン画像のサイズなどの情報を持つ FHANDLE オブジェクトを指定します。
注釈
構造体
F_GS_RESULT
に対してはグレイサーチパタンオブジェクト (F_OBJID_GS_PATTERN
) を、 構造体F_SEARCH_RESULT
に対してはFPMオブジェクト (F_OBJID_FPM
) を指定します。None を指定した場合は、点のプロットと同様にプロットされます。
これ以外のキーワード引数は Pyplot のプロット関数に直接渡されますのでプロットの詳細な指定を行うことができます。
- _struct_base.PTR.plot(num, plot_obj=None, pattern_obj=None, **kwargs)¶
構造体ポインタによるプロットを行います。
プロットはパラメータ num で指定する個数の構造体に対して行われます。
パラメータ num の指定によりプロット範囲がポインタの参照先メモリブロックのサイズを超えてしまった場合、 不正なメモリアクセスの発生につながりますので注意してください。
これ以外のパラメータに関しては構造体インスタンスの
_struct_base.plot()
と同様となります。
- _struct_base.ARRAY.plot(plot_obj=None, num=None, pattern_obj=None, **kwargs)¶
構造体配列によるプロットを行います。
プロットはパラメータ num で指定する個数の構造体に対して行われます。 num に None を指定した場合は、配列の要素となっている全構造体に対してプロットが行われます。
パラメータに関しては構造体インスタンスの
_struct_base.plot()
と同様となります。
画像処理結果のプロット¶
一部の画像処理結果は mpltools サブパッケージの関数によりプロットを行うことが可能です。 プロット可能な画像処理結果は下記です。
グレイサーチ(正規化相関サーチ)
FPM(特徴点応用マッチング)
2値ブローブ解析
1Dバーコード認識
QRコード認識
データマトリックス認識
いずれのプロット関数でも、プロットは Pyplot の複数のプロット関数を用いて行われます。
また、処理対象の画像のプロットは行われませんので、画像もプロットする場合は予めその画像に対して imshow()
を呼んでください。
注釈
mpltools サブパッケージはプレビュー機能です。 十分にテストされていません。 今後関数仕様が変更される可能性があります。
- pyfie.mpltools.plot_gs2_results(hgs_pat, results, nresults=None, plot_obj=None, show_no=True, show_score=True, font_size=None, no_props=None, score_props=None, bbox_props=None, point_props=None)¶
グレイサーチ(正規化相関サーチ)のサーチ回答のプロットを行います。
パラメータ hgs_pat にグレイサーチパターンオブジェクトを、 results にサーチ回答を表す
F_GS_RESULT
型の配列を指定します。パラメータ nresults にはサーチ回答数を指定します。 None を指定した場合は可能であれば自動的にサーチ回答数を決定します。
パラメータ show_no, show_score により、 それぞれサーチ回答番号、サーチスコアの表示可否を指定できます。 True を設定すると各項目を表示し、 False を設定すると非表示となります。
パラメータ font_size にはプロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
- パラメータ:
hgs_pat -- グレイサーチパターンオブジェクトを指定します。
results -- グレイサーチの回答を表す
F_GS_RESULT
型の配列を指定します。nresults -- グレイサーチのサーチ回答の個数を指定します。None を指定した場合は可能であれば自動的にサーチ回答数を決定します。
plot_obj -- プロットを行う
Figure
もしくはAxes
を指定します。 None を指定した場合はカレントAxes
が使用されます。show_no -- サーチ回答番号を表示する場合は True を、表示しない場合は False を指定します。
show_score -- サーチスコアを表示する場合は True を、表示しない場合は False を指定します。
font_size -- プロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
no_props -- サーチ回答番号を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
score_props -- サーチスコアを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
bbox_props -- バウンディングボックスを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
point_props -- マッチング回答位置を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
- 戻り値:
プロットが行われた
Axes
を返します。
- pyfie.mpltools.plot_fpm_results(hfpm, results, plot_obj=None, show_no=True, show_text=True, show_edges=True, show_relative_edges=True, err_wide=1, font_size=None, no_props=None, score_props=None, pose_props=None, pose_format='{q:.1f}° {s:.0f}%', edges_props=None, relative_edges_props=None, bbox_props=None, point_props=None)¶
FPM(特徴点応用マッチング)のサーチ回答のプロットを行います。
パラメータ hfpm にFPMオブジェクトを、 results にサーチ回答を表す
F_SEARCH_RESULT
型の配列を指定します。 指定するFPMオブジェクトは、マッチング処理(fnFIE_fpm_matching()
など)を実行済みである必要があります。パラメータ show_no, show_text, show_edges, show_relative_edges により、 それぞれサーチ回答番号、位置姿勢とサーチスコアのテキスト表示、エッジ情報、対応エッジ情報の表示可否を指定できます。 True を設定すると各項目を表示し、 False を設定すると非表示となります。
パラメータ err_wide には対応エッジ情報を取得する際に使用する誤差範囲を0以上の整数で指定します。
パラメータ font_size にはプロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
パラメータ pose_format は位置姿勢のテキスト表示のためのフォーマット文字列を指定します。 q が度数単位の角度、 s がパーセント単位のスケール値です。
- パラメータ:
hfpm -- FPMオブジェクトを指定します。
results -- FPMのサーチ回答を表す
F_SEARCH_RESULT
型の配列を指定します。plot_obj -- プロットを行う
Figure
もしくはAxes
を指定します。 None を指定した場合はカレントAxes
が使用されます。show_no -- サーチ回答番号を表示する場合は True を、表示しない場合は False を指定します。
show_text -- 位置姿勢とサーチスコアを表示する場合は True を、表示しない場合は False を指定します。
show_edges -- エッジ情報を表示する場合は True を、表示しない場合は False を指定します。
show_relative_edges -- 対応エッジ情報を表示する場合は True を、表示しない場合は False を指定します。
err_wide -- 対応エッジ情報を取得する際に使用する誤差範囲を0以上の整数で指定します。
font_size -- プロットで使用するフォントサイズをポイント単位で指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
no_props -- サーチ回答番号を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
score_props -- サーチスコアを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
pose_props -- 位置姿勢を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
edges_props -- エッジ情報を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
pose_format -- 位置姿勢のテキスト表示のためのフォーマット文字列を指定します。
relative_edges_props -- 対応エッジ情報を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
bbox_props -- バウンディングボックスを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
point_props -- マッチング回答位置を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
- 戻り値:
プロットが行われた
Axes
を返します。
- pyfie.mpltools.plot_measure_results(hmeasure, bloblist, nblobs, plot_obj=None, show_no=True, show_features=True, features=[], font_size=None, no_props=None, feature_props=None, bbox_props=None)¶
2値ブローブ解析結果のプロットを行います。
パラメータ hmeasure にブローブ解析結果オブジェクトを、 bloblist にブローブ番号配列を指定します。 パラメータ nblobs にはブローブ数を指定します。
パラメータ show_no, show_features により、 それぞれブローブ番号、ブローブ特徴量の表示可否を指定できます。 True を設定すると各項目を表示し、 False を設定すると非表示となります。
パラメータ features に表示するブローブ特徴量の配列を指定します。 配列の各要素は
f_measure_feature_type
列挙型の整数値でなければなりません。パラメータ font_size にはプロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
- パラメータ:
hmeasure -- ブローブ解析結果オブジェクトを指定します。
bloblist -- ブローブ番号配列を指定します。
nblobs -- ブローブ数を指定します。
plot_obj -- プロットを行う
Figure
もしくはAxes
を指定します。 None を指定した場合はカレントAxes
が使用されます。show_no -- ブローブ番号を表示する場合は True を、表示しない場合は False を指定します。
show_features -- ブローブ特徴量を表示する場合は True を、表示しない場合は False を指定します。
features -- 表示したいブローブ特徴量の配列を指定します。 配列の各要素は
f_measure_feature_type
列挙型の整数値でなければなりません。font_size -- プロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
no_props -- ブローブ番号を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
feature_props -- ブローブ特徴量を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
bbox_props -- バウンディングボックスを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
- 戻り値:
プロットが行われた
Axes
を返します。
- pyfie.mpltools.plot_barcode1d_results(hbarcode, plot_obj=None, show_no=True, show_text=True, show_line=True, show_endpoints=True, text_encoding='utf-8', font_size=None, no_props=None, text_props=None, line_props=None, endpoints_props=None)¶
1Dバーコード認識の認識結果のプロットを行います。
パラメータ hbarcode に1Dバーコードオブジェクトを指定します。 指定する1Dバーコードオブジェクトは
fnFIE_barcode_execute()
が実行済みである必要があります。パラメータ show_no, show_text, show_line, show_endpoints により、 それぞれバーコード番号、認識結果テキスト、バーコード位置を表す線分、バーコードの端点の表示可否を指定できます。 True を設定すると各項目を表示し、 False を設定すると非表示となります。
パラメータ font_size にはプロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
- パラメータ:
hbarcode -- 1Dバーコードオブジェクトを指定します。
plot_obj -- プロットを行う
Figure
もしくはAxes
を指定します。 None を指定した場合はカレントAxes
が使用されます。show_no -- バーコード番号を表示する場合は True を、表示しない場合は False を指定します。
show_text -- 認識結果テキストを表示する場合は True を、表示しない場合は False を指定します。
show_line -- バーコード位置を表す線分を表示する場合は True を、表示しない場合は False を指定します。
show_endpoints -- バーコードの端点を表示する場合は True を、表示しない場合は False を指定します。
text_encoding -- 認識結果テキストのエンコーディングを指定します。
font_size -- プロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
no_props -- バーコード番号を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
text_props -- 認識結果テキストを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
line_props -- バーコード位置を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
endpoints_props -- バーコードの端点を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
- 戻り値:
プロットが行われた
Axes
を返します。
- pyfie.mpltools.plot_qrcode_results(hqr, plot_obj=None, show_undecoded=False, show_no=True, show_text=True, show_bbox=True, show_cells=True, text_encoding='utf-8', font_size=None, no_props=None, text_props=None, bbox_props=None, cells_props=None, put_text_bottom=True)¶
QRコード認識の認識結果のプロットを行います。
パラメータ hqr にQRコードオブジェクトを指定します。 指定するQRコードオブジェクトは
fnFIE_qr_execute()
が実行済みである必要があります。パラメータ show_no, show_text, show_bbox, show_cells により、 それぞれQRコードインデックス番号、認識結果テキスト、バウンディングボックス、セル位置情報の表示可否を指定できます。 True を設定すると各項目を表示し、 False を設定すると非表示となります。
パラメータ font_size にはプロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
- パラメータ:
hqr -- QRコードオブジェクトを指定します。
plot_obj -- プロットを行う
Figure
もしくはAxes
を指定します。 None を指定した場合はカレントAxes
が使用されます。show_undecoded -- デコードに失敗したQRコードシンボルを表示する場合は True を、表示しない場合は False を指定します。
show_no -- QRコードインデックス番号を表示する場合は True を、表示しない場合は False を指定します。
show_text -- 認識結果テキストを表示する場合は True を、表示しない場合は False を指定します。
show_bbox -- バウンディングボックスを表示する場合は True を、表示しない場合は False を指定します。
show_cells -- セル位置情報を表示する場合は True を、表示しない場合は False を指定します。
text_encoding -- 認識結果テキストのエンコーディングを指定します。ECIプロトコルによる文字セット設定は無視します。
font_size -- プロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
no_props -- QRコードインデックス番号を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
text_props -- 認識結果テキストを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
bbox_props -- バウンディングボックスを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
cells_props -- セル位置情報を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
put_text_bottom -- 認識結果テキストを常に下側に表示する場合は True を、シンボルの向きに合わせて表示する場合は False を指定します。
- 戻り値:
プロットが行われた
Axes
を返します。
- pyfie.mpltools.plot_datamatrix_results(hdm, plot_obj=None, show_undecoded=False, show_no=True, show_text=True, show_bbox=True, show_cells=True, text_encoding='utf-8', font_size=None, no_props=None, text_props=None, bbox_props=None, cells_props=None, put_text_bottom=True)¶
データマトリックス認識の認識結果のプロットを行います。
パラメータ hdm にデータマトリックスオブジェクトを指定します。 指定するデータマトリックスオブジェクトは
fnFIE_dm_execute()
が実行済みである必要があります。パラメータ show_no, show_text, show_bbox, show_cells により、 それぞれデータマトリックスインデックス番号、認識結果テキスト、バウンディングボックス、セル位置情報の表示可否を指定できます。 True を設定すると各項目を表示し、 False を設定すると非表示となります。
パラメータ font_size にはプロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
- パラメータ:
hdm -- データマトリックスオブジェクトを指定します。
plot_obj -- プロットを行う
Figure
もしくはAxes
を指定します。 None を指定した場合はカレントAxes
が使用されます。show_undecoded -- デコードに失敗したデータマトリックスシンボルを表示する場合は True を、表示しない場合は False を指定します。
show_no -- データマトリックスインデックス番号を表示する場合は True を、表示しない場合は False を指定します。
show_text -- 認識結果テキストを表示する場合は True を、表示しない場合は False を指定します。
show_bbox -- バウンディングボックスを表示する場合は True を、表示しない場合は False を指定します。
show_cells -- セル位置情報を表示する場合は True を、表示しない場合は False を指定します。
text_encoding -- 認識結果テキストのエンコーディングを指定します。ECIプロトコルによる文字セット設定は無視します。
font_size -- プロットで使用するポイント単位のフォントサイズを指定します。 None を指定した場合は自動的にフォントサイズが決定されます。
no_props -- データマトリックスインデックス番号を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
text_props -- 認識結果テキストを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
bbox_props -- バウンディングボックスを表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
cells_props -- セル位置情報を表示する際に Pyplot のプロット関数に渡すキーワード引数を指定します。
put_text_bottom -- 認識結果テキストを常に下側に表示する場合は True を、シンボルの向きに合わせて表示する場合は False を指定します。
- 戻り値:
プロットが行われた
Axes
を返します。
Matplotlib を 非インタラクティブモードで使用している場合¶
Matplotlib を非インタラクティブモードで使用している環境では、
上記 PyFIE プロットメソッドの実行のみではプロットは行われず、
そのあとに Pyplot の matplotlib.pyplot.show()
関数を実行する必要があります。
(非インタラクティブモードに関しては、
Matplotlib のドキュメント
を参照してください)
matplotlib.pyplot.show()
関数は、
PyFIE のトップレベル名前空間に用意されている pyfie.plot_show()
関数により呼び出すことが可能です。
- pyfie.plot_show(*args, **kw)¶
matplotlib.pyplot.show()
を呼び出します。# PyFIE 画像オブジェクトのプロットを実行 img.imshow() # PyFIE 構造体のプロットを実行 pnt.plot() # Matplotlib を非インタラクティブモードで使用している場合 # この時点でプロットは行われていない # 下記関数を実行することにより上記プロットが行われる pyfie.plot_show()