2値ブローブ解析実行

Namespace: fvalgcli
Assembly: 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_IMAGEhimage パラメータに指定された画像オブジェクトが不正
*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 imageCopy
//    $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 imageCopy
'    $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

See Also