点情報から FPM特徴量オブジェクトを生成

Namespace: fvalgcli
Assembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)

Syntax

C#
public static FHANDLE fnFIE_fpm_feature_import_alloc(
	F_DEDGE_PTR img_edges,
	int num_img_edges,
	int img_width,
	int img_height,
	f_fpm_mode matching_mode,
	ref int perr_code
)
Visual Basic
Public Shared Function fnFIE_fpm_feature_import_alloc ( 
	img_edges As F_DEDGE_PTR,
	num_img_edges As Integer,
	img_width As Integer,
	img_height As Integer,
	matching_mode As f_fpm_mode,
	ByRef perr_code As Integer
) As FHANDLE

Parameters

img_edges
Type: fvalgcli..::..F_DEDGE_PTR
F_DEDGE 型 エッジデータ
num_img_edges
Type: System..::..Int32
img_edges に格納されているエッジデータ数(1<= num_img_edges)
img_width
Type: System..::..Int32
img_edges を取得した画像幅(1<= img_width)
img_height
Type: System..::..Int32
img_edges を取得した画像高さ(1<= img_height)
matching_mode
Type: fvalgcli..::..f_fpm_mode
FPMを行う際のマッチングモード
  • F_FPM_NORMAL_MODE 通常モード
  • F_FPM_SPEED_MODE 高速モード
perr_code
Type: System..::..Int32%
正常終了、またはエラーコードが入力されます。エラーコードを受け取る必要の無い場合は、IntPtr.Zero を指定することも可能です。
  • F_ERR_NONE 正常終了
  • F_ERR_INVALID_PARAM 引数異常
  • F_ERR_NOMEMORY メモリ不足
  • F_ERR_NO_LICENCE ライセンスエラー

Return Value

Type: FHANDLE
正常終了した場合は、生成したFPM特徴量オブジェクトのハンドルを返します。 異常終了により生成できなかったときは IntPtr.Zero を返します。

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_fpm_feature_import_alloc()
        {
            int status = (int)f_err.F_ERR_NONE;

            FHANDLE hsrc = FHANDLE.Zero;    // 処理画像.
            FHANDLE hfpm = FHANDLE.Zero;
            F_DEDGE_PTR edges = F_DEDGE_PTR.Zero;

            try
            {
                // 入力画像ファイルのロード.
                api.fnFIE_load_img_file(TestImageDir + "/testdata/gray_04.bmp", ref hsrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8);

                // 入力画像の情報取得.
                int width = api.fnFIE_img_get_width(hsrc);
                int height = api.fnFIE_img_get_height(hsrc);
                int channels = api.fnFIE_img_get_channels(hsrc);
                int type = api.fnFIE_img_get_type(hsrc);

                // エッジ検出.
                F_EDGE_SOBEL_PARAMS edge_param = F_EDGE_SOBEL_PARAMS.init(120, 3);
                int edges_num = 0;
                status = api.fnFIE_edge_sobel_subpix(
                        hsrc,
                        FHANDLE.Zero,
                        ref edge_param,
                        f_edge_feature_mode.F_EDGE_FEAT_DIRECT,
                        f_border_mode.F_BORDER_NONE,
                        DPNT_T.init(0, 0),
                        ref edges,
                        ref edges_num
                    );

                // 処理の実行.
                hfpm = api.fnFIE_fpm_feature_import_alloc(edges, edges_num, width, height, f_fpm_mode.F_FPM_NORMAL_MODE, ref status);

                // エラー判定.
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "エラーが発生しました。({0})", (f_err)status);

                // 確認.
                {
                    int fpm_edges_num = 0;
                    api.fnFIE_fpm_feature_get_num(hfpm, ref fpm_edges_num);
                    Console.WriteLine("fnFIE_fpm_feature_import_alloc: fpm_edges_num={0}", fpm_edges_num);
                    Console.WriteLine("fnFIE_fpm_feature_import_alloc: edges_num={0}", edges_num);

                    Assert.IsTrue(fpm_edges_num > 0, "エラーが発生しました。(fpm_edges_num={0})", fpm_edges_num);
                    Assert.IsTrue(edges_num > 0, "エラーが発生しました。(edges_num={0})", edges_num);
                }
            }
            finally
            {
                // オブジェクトの開放.
                hsrc.Dispose();
                hfpm.Dispose();
                edges.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_fpm_feature_import_alloc()
        Dim status As Integer = CInt(f_err.F_ERR_NONE)

        Dim hsrc As FHANDLE = FHANDLE.Zero
        ' 処理画像.
        Dim hfpm As FHANDLE = FHANDLE.Zero
        Dim edges As F_DEDGE_PTR = F_DEDGE_PTR.Zero

        Try
            ' 入力画像ファイルのロード.
            api.fnFIE_load_img_file(TestImageDir & "/testdata/gray_04.bmp", hsrc, f_color_img_type.F_COLOR_IMG_TYPE_UC8)

            ' 入力画像の情報取得.
            Dim width As Integer = api.fnFIE_img_get_width(hsrc)
            Dim height As Integer = api.fnFIE_img_get_height(hsrc)
            Dim channels As Integer = api.fnFIE_img_get_channels(hsrc)
            Dim type As Integer = api.fnFIE_img_get_type(hsrc)

            ' エッジ検出.
            Dim edge_param As F_EDGE_SOBEL_PARAMS = F_EDGE_SOBEL_PARAMS.init(120, 3)
            Dim edges_num As Integer = 0
            status = api.fnFIE_edge_sobel_subpix(hsrc, FHANDLE.Zero, edge_param, f_edge_feature_mode.F_EDGE_FEAT_DIRECT, f_border_mode.F_BORDER_NONE, DPNT_T.init(0, 0), _
                edges, edges_num)

            ' 処理の実行.
            hfpm = api.fnFIE_fpm_feature_import_alloc(edges, edges_num, width, height, f_fpm_mode.F_FPM_NORMAL_MODE, status)

            ' エラー判定.
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "エラーが発生しました。({0})", CType(status, f_err))

            ' 確認.
            If True Then
                Dim fpm_edges_num As Integer = 0
                api.fnFIE_fpm_feature_get_num(hfpm, fpm_edges_num)
                Console.WriteLine("fnFIE_fpm_feature_import_alloc: fpm_edges_num={0}", fpm_edges_num)
                Console.WriteLine("fnFIE_fpm_feature_import_alloc: edges_num={0}", edges_num)

                Assert.IsTrue(fpm_edges_num > 0, "エラーが発生しました。(fpm_edges_num={0})", fpm_edges_num)
                Assert.IsTrue(edges_num > 0, "エラーが発生しました。(edges_num={0})", edges_num)
            End If
        Finally
            ' オブジェクトの開放.
            hsrc.Dispose()
            hfpm.Dispose()
            edges.Dispose()
        End Try
    End Sub
End Class

See Also