エッジ減点領域情報の取得

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

Syntax

C#
public static int fnFIE_fpm_get_pattern_edgeless_mask(
	FHANDLE hfpm,
	ref FHANDLE phedgeless
)
Visual Basic
Public Shared Function fnFIE_fpm_get_pattern_edgeless_mask ( 
	hfpm As FHANDLE,
	ByRef phedgeless As FHANDLE
) As Integer

Parameters

hfpm
Type: fvalgcli..::..FHANDLE
FPM オブジェクト
phedgeless
Type: fvalgcli..::..FHANDLE%
マスターパタンのエッジ減点領域情報。
画像オブジェクト( type: uc8 )を生成し、FPMオブジェクトで管理されるマスターパタンのエッジ減点領域情報の複製を取得します。 エッジ減点領域として指定された画素には 1 を、指定されていない画素には 0 が設定されます。 phedgeless は IntPtr.Zero で初期化してから引数に渡してください。

Return Value

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

エラーコード:
f_err内容
F_ERR_NONE正常終了
F_ERR_INVALID_OBJECT引数オブジェクトの種別が異常
F_ERR_INVALID_PARAM引数異常
F_ERR_NOMEMORYメモリ不足
F_ERR_UNKNOWN原因不明なエラー
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>
        public void fnFIE_fpm_get_pattern_edgeless_mask(FHANDLE hFPM)
        {
            FHANDLE phedgeless = fvalgcli.FHANDLE.Zero;

            try
            {
                int status = api.fnFIE_fpm_get_pattern_edgeless_mask(hFPM, ref phedgeless);
                Assert.IsTrue(status == (int)f_err.F_ERR_NONE, "fnFIE_fpm_get_pattern_edgeless_mask: エラーが発生しました。({0})", (f_err)status);

                Console.WriteLine("fnFIE_fpm_get_pattern_edgeless_mask");

                var width = api.fnFIE_img_get_width(phedgeless);
                var height = api.fnFIE_img_get_height(phedgeless);
                var type = (f_imgtype)api.fnFIE_img_get_type(phedgeless);
                var channels = api.fnFIE_img_get_channels(phedgeless);

                Console.WriteLine("width={0}", width);
                Console.WriteLine("height={0}", height);
                Console.WriteLine("type={0}", type);
                Console.WriteLine("channels={0}", channels);

                var addr_top = api.fnFIE_img_get_adrs(phedgeless);
                var stride = api.fnFIE_img_get_step_as_bytes(phedgeless);

                int count0 = 0;
                int count1 = 0;
                int countE = 0;
                for (int y = 0; y < height; y++)
                {
                    var addr = new UCHAR_PTR(addr_top.ToInt64() + stride.ToInt64() * y);    // 行の先頭アドレス:
                    for (int x = 0; x < width; x++)
                    {
                        if (addr[x] == 0)
                            count0++;
                        else if (addr[x] == 1)
                            count1++;
                        else
                            countE++;
                    }
                }

                Console.WriteLine("count0={0}", count0);
                Console.WriteLine("count1={0}", count1);
                Console.WriteLine("countE={0}", countE);
            }
            finally
            {
                phedgeless.Dispose();
            }
        }
    }
}


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

Public Partial Class FIE
    ''' <summary>
    ''' エッジ減点領域情報の取得
    ''' </summary>
    ''' <param name="hFPM"></param>
    Public Sub fnFIE_fpm_get_pattern_edgeless_mask(hFPM As FHANDLE)
        Dim phedgeless As FHANDLE = fvalgcli.FHANDLE.Zero

        Try
            Dim status As Integer = api.fnFIE_fpm_get_pattern_edgeless_mask(hFPM, phedgeless)
            Assert.IsTrue(status = CInt(f_err.F_ERR_NONE), "fnFIE_fpm_get_pattern_edgeless_mask: エラーが発生しました。({0})", CType(status, f_err))

            Console.WriteLine("fnFIE_fpm_get_pattern_edgeless_mask")

            Dim width As Integer = api.fnFIE_img_get_width(phedgeless)
            Dim height As Integer = api.fnFIE_img_get_height(phedgeless)
            Dim type As f_imgtype = CType(api.fnFIE_img_get_type(phedgeless), f_imgtype)
            Dim channels As Integer = api.fnFIE_img_get_channels(phedgeless)

            Console.WriteLine("width={0}", width)
            Console.WriteLine("height={0}", height)
            Console.WriteLine("type={0}", type)
            Console.WriteLine("channels={0}", channels)

            Dim addr_top As IntPtr = api.fnFIE_img_get_adrs(phedgeless)
            Dim stride As SIZE_T = api.fnFIE_img_get_step_as_bytes(phedgeless)

            Dim count0 As Integer = 0
            Dim count1 As Integer = 0
            Dim countE As Integer = 0
            For y As Integer = 0 To height - 1
                Dim addr As UCHAR_PTR = New UCHAR_PTR(addr_top.ToInt64() + stride.ToInt64() * y)
                ' 行の先頭アドレス:
                For x As Integer = 0 To width - 1
                    If addr(x) = 0 Then
                        count0 += 1
                    ElseIf addr(x) = 1 Then
                        count1 += 1
                    Else
                        countE += 1
                    End If
                Next
            Next

            Console.WriteLine("count0={0}", count0)
            Console.WriteLine("count1={0}", count1)
            Console.WriteLine("countE={0}", countE)
        Finally
            phedgeless.Dispose()
        End Try
    End Sub
End Class

See Also