マッチングで使用した圧縮特徴量を取得(勾配方向付きエッジ型)

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

Syntax

C#
public static int fnFIE_fpm_get_compressed_feature_edges(
	FHANDLE hfpm,
	FHANDLE htarget,
	bool is_pattern,
	F_DEDGE_PTR edges,
	ref int edges_num
)
Visual Basic
Public Shared Function fnFIE_fpm_get_compressed_feature_edges ( 
	hfpm As FHANDLE,
	htarget As FHANDLE,
	is_pattern As Boolean,
	edges As F_DEDGE_PTR,
	ByRef edges_num As Integer
) As Integer

Parameters

hfpm
Type: fvalgcli..::..FHANDLE
FPM オブジェクト
htarget
Type: fvalgcli..::..FHANDLE
圧縮特徴量取得に使用する特徴量情報が格納されたオブジェクト。
特徴量オブジェクトが有効です。 IntPtr.Zero が指定された場合には FPM オブジェクトに格納された(最後にマッチングに使用した)特徴量情報を使用します。
is_pattern
Type: System..::..Boolean
取得する圧縮特徴量がマスターパタンのものであるかどうか。
edges
Type: fvalgcli..::..F_DEDGE_PTR
勾配付き圧縮エッジ情報。予め必要な領域を確保する必要があります。
edges_num
Type: System..::..Int32%
取得した圧縮特徴量数

Return Value

Type: Int32
以下のエラーコードを返します。

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_NOMEMORYメモリ不足
F_ERR_INVALID_OBJECT引数オブジェクトの種別が異常
F_ERR_INVALID_PARAM引数異常
F_ERR_FPM_NOFEATURE特徴量がありません
F_ERR_NO_LICENCEライセンスエラー、または未初期化エラー

Examples

C# Copy imageCopy
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace TC
{
    public partial class FIE
    {
        /// <summary>
        /// マッチングで使用した圧縮特徴量を取得(勾配方向付きエッジ型)
        /// </summary>
        /// <param name="hFPM"></param>
        /// <param name="hFeature"></param>
        public void fnFIE_fpm_get_compressed_feature_edges(FHANDLE hFPM, FHANDLE hFeature)
        {
            F_DEDGE_PTR edges = IntPtr.Zero;

            // 1: マスターパタン特徴量から取得する場合:
            try
            {
                int required_num = 0;
                api.fnFIE_fpm_get_pattern_feature_num(hFPM, ref required_num);

                edges = F_DEDGE_PTR.alloc(required_num);
                int edges_num = 0;
                int status = api.fnFIE_fpm_get_compressed_feature_edges(hFPM, IntPtr.Zero, true, edges, ref edges_num);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_fpm_get_compressed_feature_edges: エラーが発生しました。({0})", (f_err)status);
                Console.WriteLine("fnFIE_fpm_get_compressed_feature_edges : 1 : required_num = {0}, edges_num = {1}", required_num, edges_num);
            }
            finally
            {
                edges.Dispose();
            }

            // 2: FPMオブジェクトに格納された特徴量から取得する場合:
            try
            {
                int required_num = 0;
                api.fnFIE_fpm_get_matching_feature_num(hFPM, ref required_num);

                edges = F_DEDGE_PTR.alloc(required_num);
                int edges_num = 0;
                int status = api.fnFIE_fpm_get_compressed_feature_edges(hFPM, IntPtr.Zero, false, edges, ref edges_num);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_fpm_get_compressed_feature_edges: エラーが発生しました。({0})", (f_err)status);
                Console.WriteLine("fnFIE_fpm_get_compressed_feature_edges : 2 : required_num = {0}, edges_num = {1}", required_num, edges_num);
            }
            finally
            {
                edges.Dispose();
            }

            // 3: 特徴量オブジェクト htarget に格納された特徴量から取得する場合:
            try
            {
                int required_num = 0;
                api.fnFIE_fpm_feature_get_num(hFeature, ref required_num);

                edges = F_DEDGE_PTR.alloc(required_num);
                int edges_num = 0;
                int status = api.fnFIE_fpm_get_compressed_feature_edges(hFPM, hFeature, false, edges, ref edges_num);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_fpm_get_compressed_feature_edges: エラーが発生しました。({0})", (f_err)status);
                Console.WriteLine("fnFIE_fpm_get_compressed_feature_edges : 3 : required_num = {0}, edges_num = {1}", required_num, edges_num);
            }
            finally
            {
                edges.Dispose();
            }
        }
    }
}


Visual Basic Copy imageCopy
Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli

Public Partial Class FIE
    ''' <summary>
    ''' マッチングで使用した圧縮特徴量を取得(勾配方向付きエッジ型)
    ''' </summary>
    ''' <param name="hFPM"></param>
    ''' <param name="hFeature"></param>
    Public Sub fnFIE_fpm_get_compressed_feature_edges(hFPM As FHANDLE, hFeature As FHANDLE)
        Dim edges As F_DEDGE_PTR = IntPtr.Zero

        ' 1: マスターパタン特徴量から取得する場合:
        Try
            Dim required_num As Integer = 0
            api.fnFIE_fpm_get_pattern_feature_num(hFPM, required_num)

            edges = F_DEDGE_PTR.alloc(required_num)
            Dim edges_num As Integer = 0
            Dim status As Integer = api.fnFIE_fpm_get_compressed_feature_edges(hFPM, IntPtr.Zero, True, edges, edges_num)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_fpm_get_compressed_feature_edges: エラーが発生しました。({0})", CType(status, f_err))
            Console.WriteLine("fnFIE_fpm_get_compressed_feature_edges : 1 : required_num = {0}, edges_num = {1}", required_num, edges_num)
        Finally
            edges.Dispose()
        End Try

        ' 2: FPMオブジェクトに格納された特徴量から取得する場合:
        Try
            Dim required_num As Integer = 0
            api.fnFIE_fpm_get_matching_feature_num(hFPM, required_num)

            edges = F_DEDGE_PTR.alloc(required_num)
            Dim edges_num As Integer = 0
            Dim status As Integer = api.fnFIE_fpm_get_compressed_feature_edges(hFPM, IntPtr.Zero, False, edges, edges_num)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_fpm_get_compressed_feature_edges: エラーが発生しました。({0})", CType(status, f_err))
            Console.WriteLine("fnFIE_fpm_get_compressed_feature_edges : 2 : required_num = {0}, edges_num = {1}", required_num, edges_num)
        Finally
            edges.Dispose()
        End Try

        ' 3: 特徴量オブジェクト htarget に格納された特徴量から取得する場合:
        Try
            Dim required_num As Integer = 0
            api.fnFIE_fpm_feature_get_num(hFeature, required_num)

            edges = F_DEDGE_PTR.alloc(required_num)
            Dim edges_num As Integer = 0
            Dim status As Integer = api.fnFIE_fpm_get_compressed_feature_edges(hFPM, hFeature, False, edges, edges_num)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_fpm_get_compressed_feature_edges: エラーが発生しました。({0})", CType(status, f_err))
            Console.WriteLine("fnFIE_fpm_get_compressed_feature_edges : 3 : required_num = {0}, edges_num = {1}", required_num, edges_num)
        Finally
            edges.Dispose()
        End Try
    End Sub
End Class

See Also