データ構造 | |
| struct | F_MEASURE2_PARAMS |
| ブローブ解析処理(拡張版)パラメータ [詳細] | |
列挙型 | |
| enum | f_measure2_color_mode { F_MEASURE2_BLACKFG_WHITEBG = F_MEASURE_BLACKFG_WHITEBG, F_MEASURE2_WHITEFG_BLACKBG = F_MEASURE_WHITEFG_BLACKBG, F_MEASURE2_BLACKFG = F_MEASURE_BLACKFG, F_MEASURE2_WHITEFG = F_MEASURE_WHITEFG } |
| ブローブ解析(拡張版):対象色指定 [詳細] | |
関数 | |
| FHANDLE FVALGAPI | fnFIE_measure2_execute (FHANDLE himage, PNT_T offset, const F_MEASURE2_PARAMS *params, INT *exerr) |
| 2値ブローブ解析実行 | |
| FHANDLE FVALGAPI fnFIE_measure2_execute | ( | FHANDLE | himage, | |
| PNT_T | offset, | |||
| const F_MEASURE2_PARAMS * | params, | |||
| INT * | exerr | |||
| ) |
2値ブローブ解析実行
himage にて指定された2値画像に対して、2値ブローブ解析処理を実行します。 himage は幅が 524287 以下、高さが 134217727 以下、チャネル数=1の2値画像(type=F_IMG_BIN)でなければなりません。
offset は2値画像の座標系を指定するためのパラメータであり、 画像(0,0)の画素の座標をいくつと見なすかということです(下図参照)。 チャイルド画像に対してブローブ解析を行う際に、ルート画像の原点を ブローブ解析時の座標の原点としたい場合などに利用します。
Fig. offsetパラメータの説明
params はブローブ解析のためのパラメータセットです。 F_MEASURE2_PARAMS のドキュメントを参照して下さい。
返されたハンドルオブジェクトは不要になったら fnFIE_free_object() にて解放してください。
| [in] | himage | 入力画像( type: bin ) |
| [in] | offset | 原点座標オフセット |
| [in] | params | パラメータセット |
| [out] | exerr | エラーコード。エラーコードを受け取る必要の無い場合は、NULLを指定します。 |
| *exerr==F_ERR_NONE | 正常終了 | |
| *exerr==F_ERR_NOMEMORY | メモリ不足エラー | |
| *exerr==F_ERR_INVALID_PARAM | パラメータエラー | |
| *exerr==F_ERR_INVALID_IMAGE | himage パラメータに指定された画像オブジェクトが不正 | |
| *exerr==F_ERR_MEASURE_RUN_OVERFLOW | ラン数が params->max_runs を超えたため、中断した | |
| *exerr==F_ERR_MEASURE_BLOB_OVERFLOW | ブローブ数が UI32_MAX を超えたため、中断した | |
| *exerr==F_ERR_NO_LICENCE | ライセンスエラー、または未初期化エラー |
// エラー処理は省略しているので注意して下さい。 #include <stdio.h> #include "fie.h" INT main() { FHANDLE himg = NULL; FHANDLE measure_result; F_MEASURE2_PARAMS param; PNT_T orgin; INT exerr; UDLONG blobnum; // FIEライブラリの使用前に必ずコールする必要があります。 fnFIE_setup(); // 適当な2値画像を用意する - 画像ファイル名は適宜変更すること fnFIE_load_bmp( "test.bmp", &himg, F_COLOR_IMG_TYPE_UC8 ); // 座標原点の指定 orgin.x = 0; orgin.y = 0; // パラメータ設定 memset( ¶m, 0, sizeof(F_MEASURE2_PARAMS) ); param.color_mode = F_MEASURE2_WHITEFG_BLACKBG; param.neighborhood = 8; // メジャー実行 measure_result = fnFIE_measure2_execute( himg, orgin, ¶m, &exerr ); // 全ブローブ数の取得&表示 fnFIE_measure2_get_blobnum( measure_result, &blobnum ); printf( "blobs:%llu\n", blobnum ); fnFIE_free_object( measure_result ); fnFIE_free_object( himg ); // 終了処理 fnFIE_teardown(); return 0; }