FPM オブジェクト生成

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

Syntax

C#
public static FHANDLE fnFIE_fpm_alloc(
	FHANDLE himage,
	FHANDLE hmask,
	DPNT_T offset,
	f_fpm_mode matching_mode,
	f_fpm_featedge method,
	ref F_FPM_FEATURE pfeature_param,
	ref int perr_code
)
Visual Basic
Public Shared Function fnFIE_fpm_alloc ( 
	himage As FHANDLE,
	hmask As FHANDLE,
	offset As DPNT_T,
	matching_mode As f_fpm_mode,
	method As f_fpm_featedge,
	ByRef pfeature_param As F_FPM_FEATURE,
	ByRef perr_code As Integer
) As FHANDLE

Parameters

himage
Type: fvalgcli..::..FHANDLE
FPMで使用するための特徴量を取得する対象となる画像オブジェクト(画像タイプ:uc8 のみ対応)。 チャネル数は 1 でなければいけません。
hmask
Type: fvalgcli..::..FHANDLE
マスターパタン特徴量取得時のマスク指定用画像オブジェクト(画像タイプ:uc8 のみ対応)。 チャネル数は 1 でなければいけません。 IntPtr.Zero を指定するとマスクなしのパターンになります。
offset
Type: fvalgcli..::..DPNT_T
マッチング回答オフセット値(マスターパタン画像の左上位置からの相対値)
matching_mode
Type: fvalgcli..::..f_fpm_mode
FPMを行う際のマッチングモード
  • F_FPM_NORMAL_MODE 通常モード
  • F_FPM_SPEED_MODE 高速モード
method
Type: fvalgcli..::..f_fpm_featedge
特徴量抽出手法
  • F_FPM_SOBEL_EDGE ソーベルによる特徴量抽出
  • F_FPM_CORR_EDGE 相関エッジによる特徴量抽出
pfeature_param
Type: fvalgcli..::..F_FPM_FEATURE%
FPMオブジェクトを生成する際に使用する特徴量計測パラメータ。
perr_code
Type: System..::..Int32%
正常終了、またはエラーコードが入力されます。エラーコードを受け取る必要の無い場合は、IntPtr.Zero を指定します。
  • F_ERR_NONE 正常終了
  • F_ERR_INVALID_IMAGE 引数画像オブジェクトが異常
  • F_ERR_INVALID_PARAM 引数異常
  • F_ERR_NOMEMORY メモリ不足
  • F_ERR_FPM_NOFEATURE 特徴量が見つかりません。
  • 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
    {
        /// <summary>
        /// FPMオブジェクトの生成.
        /// </summary>
        /// <param name="hPattern">パタン画像</param>
        /// <returns>
        ///        FPMオブジェクトを返します.
        /// </returns>
        [FvPluginExecute]
        public void fnFIE_fpm_alloc()
        {
            string ptn_file = TestImageDir + "/testdata/fpm00.bmp";

            FHANDLE hPattern = FHANDLE.Zero;
            FHANDLE hFPM = FHANDLE.Zero;
            FHANDLE hMask = FHANDLE.Zero;

            try
            {
                // 画像ファイルの読み込み.
                api.fnFIE_load_bmp(ptn_file, ref hPattern, f_color_img_type.F_COLOR_IMG_TYPE_UC8);

                // マスク画像.(省略時は NULL)
                //hMask = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, 1, api.fnFIE_img_get_width(hPattern), api.fnFIE_img_get_height(hPattern));
                //api.fnFIE_img_clear(hMask, 0);

                // FPMオブジェクトの作成.
                DPNT_T offset = new DPNT_T();
                f_fpm_mode matching_mode = f_fpm_mode.F_FPM_SPEED_MODE;
                f_fpm_featedge method = f_fpm_featedge.F_FPM_SOBEL_EDGE;
                F_FPM_FEATURE pfeature_param = new F_FPM_FEATURE();
                pfeature_param.sobel_edge = F_EDGE_SOBEL_PARAMS.init(120, 3);
                int perr_code = 0;

                hFPM = api.fnFIE_fpm_alloc(hPattern, hMask, offset, matching_mode, method, ref pfeature_param, ref perr_code);
                Assert.IsTrue(perr_code == (int)f_err.F_ERR_NONE, "fnFIE_fpm_alloc: エラーが発生しました。({0})", (f_err)perr_code);
                Console.WriteLine("fnFIE_fpm_alloc");

                // 操作.
                fnFIE_fpm_set_pattern_offset(hFPM);
                fnFIE_fpm_get_pattern_offset(hFPM);

                // 操作.
                fnFIE_fpm_set_pitch(hFPM);
                fnFIE_fpm_get_pitch(hFPM);

                // 操作.
                fnFIE_fpm_set_refine_pose_boundary_mode(hFPM);
                fnFIE_fpm_get_refine_pose_boundary_mode(hFPM);
            }
            finally
            {
                hPattern.Dispose();
                hFPM.Dispose();
                hMask.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
'    $Revision: 1.1 $

Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Public Partial Class FIE
    ''' <summary>
    ''' FPMオブジェクトの生成.
    ''' </summary>
    ''' <param name="hPattern">パタン画像</param>
    ''' <returns>
    '''        FPMオブジェクトを返します.
    ''' </returns>
    <FvPluginExecute> _
    Public Sub fnFIE_fpm_alloc()
        Dim ptn_file As String = TestImageDir & "/testdata/fpm00.bmp"

        Dim hPattern As FHANDLE = FHANDLE.Zero
        Dim hFPM As FHANDLE = FHANDLE.Zero
        Dim hMask As FHANDLE = FHANDLE.Zero

        Try
            ' 画像ファイルの読み込み.
            api.fnFIE_load_bmp(ptn_file, hPattern, f_color_img_type.F_COLOR_IMG_TYPE_UC8)

            ' マスク画像.(省略時は NULL)
            'hMask = api.fnFIE_img_root_alloc((int)f_imgtype.F_IMG_UC8, 1, api.fnFIE_img_get_width(hPattern), api.fnFIE_img_get_height(hPattern));
            'api.fnFIE_img_clear(hMask, 0);

            ' FPMオブジェクトの作成.
            Dim offset As New DPNT_T()
            Dim matching_mode As f_fpm_mode = f_fpm_mode.F_FPM_SPEED_MODE
            Dim method As f_fpm_featedge = f_fpm_featedge.F_FPM_SOBEL_EDGE
            Dim pfeature_param As New F_FPM_FEATURE()
            pfeature_param.sobel_edge = F_EDGE_SOBEL_PARAMS.init(120, 3)
            Dim perr_code As Integer = 0

            hFPM = api.fnFIE_fpm_alloc(hPattern, hMask, offset, matching_mode, method, pfeature_param, _
                perr_code)
            Assert.IsTrue(perr_code = CInt(f_err.F_ERR_NONE), "fnFIE_fpm_alloc: エラーが発生しました。({0})", CType(perr_code, f_err))
            Console.WriteLine("fnFIE_fpm_alloc")

            ' 操作.
            fnFIE_fpm_set_pattern_offset(hFPM)
            fnFIE_fpm_get_pattern_offset(hFPM)

            ' 操作.
            fnFIE_fpm_set_pitch(hFPM)
            fnFIE_fpm_get_pitch(hFPM)

            ' 操作.
            fnFIE_fpm_set_refine_pose_boundary_mode(hFPM)
            fnFIE_fpm_get_refine_pose_boundary_mode(hFPM)
        Finally
            hPattern.Dispose()
            hFPM.Dispose()
            hMask.Dispose()
        End Try
    End Sub
End Class

See Also