2値ブローブ解析実行
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static FHANDLE fnFIE_measure_execute( FHANDLE himage, PNT_T offset, ref F_MEASURE_PARAMS param, ref int exerr ) |
Visual Basic |
---|
Public Shared Function fnFIE_measure_execute ( himage As FHANDLE, offset As PNT_T, ByRef param As F_MEASURE_PARAMS, ByRef exerr As Integer ) As FHANDLE |
Parameters
- himage
- Type: fvalgcli..::..FHANDLE
入力画像( type: bin )
- offset
- Type: fvalgcli..::..PNT_T
原点座標オフセット
- param
- Type: fvalgcli..::..F_MEASURE_PARAMS%
パラメータセット
- exerr
- Type: System..::..Int32%
エラーコード。エラーコードを受け取る必要の無い場合は、IntPtr.Zero を指定します。
Return Value
Type: FHANDLE正常に終了した場合は、2値ブローブ解析結果ハンドル(F_MEASURE_RESULTオブジェクト) を返します。 何らかのエラーが発生し、処理が失敗した場合は IntPtr.Zero を返します。 正常、異常、どちらの場合も exerr パラメータにエラーコード受け取り先変数のポインタが 渡された場合は、 そこにエラーコードを代入して返します。返されるエラーコードは下記の何れかです。
f_err | 内容 |
---|---|
*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 | ブローブ数が params->max_blobs を超えたため、中断した |
*exerr==F_ERR_NO_LICENCE | ライセンスエラー |
Remarks
Examples
C# | Copy |
---|---|
// $Revision: 1.1 $ using System; using System.Collections.Generic; using System.Text; using fvalgcli; namespace TC { public partial class FIE { [FvPluginExecute] public void fnFIE_measure_execute() { int status = (int)f_err.F_ERR_NONE; // 入力画像の読み込み. FHANDLE hSrc = FHANDLE.Zero; FHANDLE result = FHANDLE.Zero; try { status = api.fnFIE_load_img_file(TestImageDir + "/TC/SampleCode/blob_BIN.png", ref hSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8); if (status != (int)f_err.F_ERR_NONE) Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status); F_MEASURE_PARAMS param = new F_MEASURE_PARAMS(); PNT_T orgin = new PNT_T(); int exerr = 0; orgin.x = 0; // オフセットX orgin.y = 0; // オフセットY // パラメータ. param.color_mode = f_measure_color_mode.F_MEASURE_WHITEFG_BLACKBG; param.neighborhood = 8; param.max_blobs = 0; param.max_rows = 0; param.max_runs = 0; param.precalc_features = 0; param.keep_results_after_overflow = false; // 2値ブローブ解析実行. result = api.fnFIE_measure_execute(hSrc, orgin, ref param, ref exerr); // 戻り値がNULL(FHANDLE.Zero)なら、エラーを出力 Assert.IsTrue(result != FHANDLE.Zero, "エラーが発生しました。({0})", exerr); //2値ブローブ解析続行. fnFIE_measure_continue(result, hSrc); fnFIE_measure_get_list(result); // ブローブ番号配列取得. fnFIE_measure_refilter_list(result); // ブローブ番号配列再取得. fnFIE_measure_sort_list(result); // ブローブ特徴量に基づくソーティング. fnFIE_measure_specialsort_list(result); uint i = 0; api.fnFIE_measure_get_blobnum(result, ref i); // ブローブ総数取得. // 出力量を減らすために1個だけ出力. //for (uint j = 1; j < i; j++) //{ uint blobno = 1; fnFIE_measure_get_area(result, blobno); // 面積取得. fnFIE_measure_get_area_with_hole(result, blobno); // 穴も含む面積取得. fnFIE_measure_get_hole_area(result, blobno); // 穴面積取得. fnFIE_measure_get_hole_num(result, blobno); // 穴数取得. fnFIE_measure_get_hole_ratio(result, blobno); // 穴面積比取得. fnFIE_measure_get_center(result, blobno); // 重心座標取得. fnFIE_measure_get_parent(result, blobno); // 親ブローブ番号取得. fnFIE_measure_get_child(result, blobno); // 子ブローブ番号取得. fnFIE_measure_get_sibling_back(result, blobno); // 1つ後ろの兄弟ブローブ番号取得. fnFIE_measure_get_sibling_next(result, blobno); // 1つ次の兄弟ブローブ番号取得. fnFIE_measure_get_sibling_num(result, blobno); // 兄弟ブローブ数取得. fnFIE_measure_get_is_valid(result, blobno); // ブローブの有効/無効. fnFIE_measure_get_perimeter(result, blobno); // 周囲長取得. fnFIE_measure_get_equivalent_disk(result, blobno); // 面積等価円取得. fnFIE_measure_get_equivalent_ellipse(result, blobno); // 面積等価楕円取得. fnFIE_measure_get_equivalent_circle(result, blobno); // 周囲長等価円取得. fnFIE_measure_get_color(result, blobno); // 色取得. fnFIE_measure_get_xyrange(result, blobno); // xyrange取得. fnFIE_measure_get_maxminpos(result, blobno); // 座標の最大最小位置取得. fnFIE_measure_get_xydiff(result, blobno); // 外接矩形サイズ取得. fnFIE_measure_get_rect1_area(result, blobno); // 外接矩形面積取得. fnFIE_measure_get_rect1_lratio(result, blobno); // 外接矩形縦横比取得. fnFIE_measure_get_rect1_sratio(result, blobno); // 外接矩形面積比取得. fnFIE_measure_get_rect2_area(result, blobno); // 外接長方形面積取得. fnFIE_measure_get_rect2_lratio(result, blobno); // 外接長方形縦横比取得. fnFIE_measure_get_rect2_sratio(result, blobno); // 外接長方形面積比取得. fnFIE_measure_get_rect2_size(result, blobno); // 外接長方形取得. fnFIE_measure_get_moment1(result, blobno); // 1次モーメント取得. fnFIE_measure_get_moment2(result, blobno); // 2次モーメント取得. fnFIE_measure_get_central_moment2(result, blobno); // 重心2次モーメント取得. fnFIE_measure_get_moment3(result, blobno); // 3次モーメント取得. fnFIE_measure_get_central_moment3(result, blobno); // 重心3次モーメント取得. fnFIE_measure_get_moment(result, blobno); // N次モーメント取得. fnFIE_measure_get_central_moment(result, blobno); // 重心N次モーメント取得. fnFIE_measure_get_hu_moments(result, blobno); // Huモーメント不変量の取得. fnFIE_measure_get_feret_diameter(result, blobno); // フェレ径取得. fnFIE_measure_get_circmcircle(result, blobno); // 最小外接円取得. fnFIE_measure_get_convex2d(result, blobno); // 凸包取得. fnFIE_measure_get_feret_diameter_maxmin(result, blobno);// 最大フェレ径、最小フェレ径取得. fnFIE_measure_get_rect2pos(result, blobno); // 外接長方形の頂点座標取得. fnFIE_measure_get_bounding_rotated_rect_pos(result, blobno); // 指定角度外接長方形の頂点座標の取得. fnFIE_measure_get_convexfeature(result, blobno); // 凸包面積・周囲長取得. fnFIE_measure_get_convexratio(result, blobno); // 凸包面積比・周囲長比取得. fnFIE_measure_get_distance_to_boundary(result, blobno); // 外周距離取得. fnFIE_measure_get_circularity1(result, blobno); // 真円度#1取得. fnFIE_measure_get_circularity2(result, blobno); // 真円度#2取得. fnFIE_measure_get_circularity3(result, blobno); // 真円度#3取得. fnFIE_measure_get_distance_to_childs(result, blobno); // 子供距離取得. fnFIE_measure_get_pps(result, blobno); // 面積周囲比取得. fnFIE_measure_get_distance_to_siblings(result, blobno); // 隣接エリア間距離取得. fnFIE_measure_get_region(result, blobno); // REGION取得. fnFIE_measure_get_boundary(result, blobno); // 周囲座標取得. fnFIE_measure_get_boundary_ex(result, blobno); // 周囲座標取得 拡張版. //} fnFIE_measure_get_blobnum(result); // ブローブ総数取得. fnFIE_measure_get_real_blobnum(result); // 有効ブローブ総数取得. fnFIE_measure_get_blobno_on_xy(result); // 座標(x,y)位置のブローブ番号取得. fnFIE_measure_query_timings(result); // ブローブ解析処理時間取得. } finally { hSrc.Dispose(); result.Dispose(); } } } } |
Visual Basic | Copy |
---|---|
' $Revision: 1.1 $ Imports System.Collections.Generic Imports System.Text Imports fvalgcli Public Partial Class FIE <FvPluginExecute> _ Public Sub fnFIE_measure_execute() Dim status As Integer = CInt(f_err.F_ERR_NONE) ' 入力画像の読み込み. Dim hSrc As FHANDLE = FHANDLE.Zero Dim result As FHANDLE = FHANDLE.Zero Try status = api.fnFIE_load_img_file(TestImageDir & "/TC/SampleCode/blob_BIN.png", hSrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8) If status <> CInt(f_err.F_ERR_NONE) Then Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err)) End If Dim param As New F_MEASURE_PARAMS() Dim orgin As New PNT_T() Dim exerr As Integer = 0 orgin.x = 0 ' オフセットX orgin.y = 0 ' オフセットY ' パラメータ. param.color_mode = f_measure_color_mode.F_MEASURE_WHITEFG_BLACKBG param.neighborhood = 8 param.max_blobs = 0 param.max_rows = 0 param.max_runs = 0 param.precalc_features = 0 param.keep_results_after_overflow = False ' 2値ブローブ解析実行. result = api.fnFIE_measure_execute(hSrc, orgin, param, exerr) ' 戻り値がNULL(FHANDLE.Zero)なら、エラーを出力 Assert.IsTrue(result <> FHANDLE.Zero, "エラーが発生しました。({0})", exerr) '2値ブローブ解析続行. fnFIE_measure_continue(result, hSrc) fnFIE_measure_get_list(result) ' ブローブ番号配列取得. fnFIE_measure_refilter_list(result) ' ブローブ番号配列再取得. fnFIE_measure_sort_list(result) ' ブローブ特徴量に基づくソーティング. fnFIE_measure_specialsort_list(result) Dim i As UInteger = 0 api.fnFIE_measure_get_blobnum(result, i) ' ブローブ総数取得. ' 出力量を減らすために1個だけ出力. 'for (uint j = 1; j < i; j++) '{ Dim blobno As UInteger = 1 fnFIE_measure_get_area(result, blobno) ' 面積取得. fnFIE_measure_get_area_with_hole(result, blobno) ' 穴も含む面積取得. fnFIE_measure_get_hole_area(result, blobno) ' 穴面積取得. fnFIE_measure_get_hole_num(result, blobno) ' 穴数取得. fnFIE_measure_get_hole_ratio(result, blobno) ' 穴面積比取得. fnFIE_measure_get_center(result, blobno) ' 重心座標取得. fnFIE_measure_get_parent(result, blobno) ' 親ブローブ番号取得. fnFIE_measure_get_child(result, blobno) ' 子ブローブ番号取得. fnFIE_measure_get_sibling_back(result, blobno) ' 1つ後ろの兄弟ブローブ番号取得. fnFIE_measure_get_sibling_next(result, blobno) ' 1つ次の兄弟ブローブ番号取得. fnFIE_measure_get_sibling_num(result, blobno) ' 兄弟ブローブ数取得. fnFIE_measure_get_is_valid(result, blobno) ' ブローブの有効/無効. fnFIE_measure_get_perimeter(result, blobno) ' 周囲長取得. fnFIE_measure_get_equivalent_disk(result, blobno) ' 面積等価円取得. fnFIE_measure_get_equivalent_ellipse(result, blobno) ' 面積等価楕円取得. fnFIE_measure_get_equivalent_circle(result, blobno) ' 周囲長等価円取得. fnFIE_measure_get_color(result, blobno) ' 色取得. fnFIE_measure_get_xyrange(result, blobno) ' xyrange取得. fnFIE_measure_get_maxminpos(result, blobno) ' 座標の最大最小位置取得. fnFIE_measure_get_xydiff(result, blobno) ' 外接矩形サイズ取得. fnFIE_measure_get_rect1_area(result, blobno) ' 外接矩形面積取得. fnFIE_measure_get_rect1_lratio(result, blobno) ' 外接矩形縦横比取得. fnFIE_measure_get_rect1_sratio(result, blobno) ' 外接矩形面積比取得. fnFIE_measure_get_rect2_area(result, blobno) ' 外接長方形面積取得. fnFIE_measure_get_rect2_lratio(result, blobno) ' 外接長方形縦横比取得. fnFIE_measure_get_rect2_sratio(result, blobno) ' 外接長方形面積比取得. fnFIE_measure_get_rect2_size(result, blobno) ' 外接長方形取得. fnFIE_measure_get_moment1(result, blobno) ' 1次モーメント取得. fnFIE_measure_get_moment2(result, blobno) ' 2次モーメント取得. fnFIE_measure_get_central_moment2(result, blobno) ' 重心2次モーメント取得. fnFIE_measure_get_moment3(result, blobno) ' 3次モーメント取得. fnFIE_measure_get_central_moment3(result, blobno) ' 重心3次モーメント取得. fnFIE_measure_get_moment(result, blobno) ' N次モーメント取得. fnFIE_measure_get_central_moment(result, blobno) ' 重心N次モーメント取得. fnFIE_measure_get_hu_moments(result, blobno) ' Huモーメント不変量の取得. fnFIE_measure_get_feret_diameter(result, blobno) ' フェレ径取得. fnFIE_measure_get_circmcircle(result, blobno) ' 最小外接円取得. fnFIE_measure_get_convex2d(result, blobno) ' 凸包取得. fnFIE_measure_get_feret_diameter_maxmin(result, blobno) ' 最大フェレ径、最小フェレ径取得. fnFIE_measure_get_rect2pos(result, blobno) ' 外接長方形の頂点座標取得. fnFIE_measure_get_bounding_rotated_rect_pos(result, blobno) ' 指定角度外接長方形の頂点座標の取得. fnFIE_measure_get_convexfeature(result, blobno) ' 凸包面積・周囲長取得. fnFIE_measure_get_convexratio(result, blobno) ' 凸包面積比・周囲長比取得. fnFIE_measure_get_distance_to_boundary(result, blobno) ' 外周距離取得. fnFIE_measure_get_circularity1(result, blobno) ' 真円度#1取得. fnFIE_measure_get_circularity2(result, blobno) ' 真円度#2取得. fnFIE_measure_get_circularity3(result, blobno) ' 真円度#3取得. fnFIE_measure_get_distance_to_childs(result, blobno) ' 子供距離取得. fnFIE_measure_get_pps(result, blobno) ' 面積周囲比取得. fnFIE_measure_get_distance_to_siblings(result, blobno) ' 隣接エリア間距離取得. fnFIE_measure_get_region(result, blobno) ' REGION取得. fnFIE_measure_get_boundary(result, blobno) ' 周囲座標取得. fnFIE_measure_get_boundary_ex(result, blobno) ' 周囲座標取得 拡張版. '} fnFIE_measure_get_blobnum(result) ' ブローブ総数取得. fnFIE_measure_get_real_blobnum(result) ' 有効ブローブ総数取得. fnFIE_measure_get_blobno_on_xy(result) ' 座標(x,y)位置のブローブ番号取得. ' ブローブ解析処理時間取得. fnFIE_measure_query_timings(result) Finally hSrc.Dispose() result.Dispose() End Try End Sub End Class |