周囲座標の取得

Namespace: FVIL.Region
Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)

Syntax

C#
[ObsoleteAttribute("Please use CFviRegion.GetBoundaryEx")]
public static void GetBoundaryEx(
	CFviRegion region,
	PNT_T_ARRAY points_ext,
	PNT_T_ARRAY points_int
)
Visual Basic
<ObsoleteAttribute("Please use CFviRegion.GetBoundaryEx")> 
Public Shared Sub GetBoundaryEx ( 
	region As CFviRegion,
	points_ext As PNT_T_ARRAY,
	points_int As PNT_T_ARRAY
)

Parameters

region
Type: FVIL.Data..::..CFviRegion
取得対象のリージョン
points_ext
Type: FVIL..::..PNT_T_ARRAY
境界点列(外周) [不要な場合は null を指定してください]
points_int
Type: FVIL..::..PNT_T_ARRAY
境界点列(内周) [不要な場合は null を指定してください]

Remarks

リージョンの境界点列を取得します。

この関数は CFviRegion.BoundaryCFviRegion.BoundaryInternal の改良版です。 データコピーやインスタンス生成のコストを削減できるため、高速に取得できます。 特徴量の意味は Boundary 及び BoundaryInternal の説明をご参照ください。

処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。


エラーコード:
ErrorCode メンバ内容
11FVIL.ErrorCode.INVALID_PARAMETER引数に指定された値が不正です。

関連する FIE 関数:

fnFIE_region_calc_boundary_ex

Examples

ソースコード:
C# Copy imageCopy
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace User.SampleCode.Region
{
    public partial class Function
    {
        /// <summary>
        /// 周囲座標の取得.
        /// </summary>
        [FvPluginExecute]
        public void GetBoundaryEx()
        {
            // 0) 画像オブジェクトの準備.
            // ※指定画像の処理ウィンドウで指定された範囲が、リージョンとして抽出の対象となる。
            FVIL.Data.CFviImage src = new FVIL.Data.CFviImage();
            FVIL.File.Function.LoadImageFile(Defs.TestImageDir + "/key_BIN_M.png", src, FVIL.PixelMode.Unpacking);
            src.Window = new System.Drawing.Rectangle(130, 40, 60, 130);

            // 1) リージョンの生成.
            FVIL.Data.CFviRegion region = CreateRegion(src);

            // 2) 画像処理実行.
            FVIL.PNT_T_ARRAY points_ext = new FVIL.PNT_T_ARRAY();
            FVIL.PNT_T_ARRAY points_int = new FVIL.PNT_T_ARRAY();
            FVIL.Region.Function.GetBoundaryEx(region, points_ext, points_int);

            // E) 確認.
            {
                FVIL.Data.CFviImage image = new FVIL.Data.CFviImage();
                FVIL.Paint.Function.DrawPoints(image, points_ext, 200.0);
                FVIL.Paint.Function.DrawPoints(image, points_int, 100.0);
                FVIL.File.Function.SaveImageFile(Defs.ResultDir + "/Region.GetBoundaryEx.png", image);
            }    
        }
    }
}


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

Namespace SampleCode.Region
    Public Partial Class [Function]
        ''' <summary>
        ''' 周囲座標の取得.
        ''' </summary>
        <FvPluginExecute> _
        Public Sub GetBoundaryEx()
            ' 0) 画像オブジェクトの準備.
            ' ※指定画像の処理ウィンドウで指定された範囲が、リージョンとして抽出の対象となる。
            Dim src As New FVIL.Data.CFviImage()
            FVIL.File.[Function].LoadImageFile(Defs.TestImageDir & "/key_BIN_M.png", src, FVIL.PixelMode.Unpacking)
            src.Window = New System.Drawing.Rectangle(130, 40, 60, 130)

            ' 1) リージョンの生成.
            Dim region As FVIL.Data.CFviRegion = CreateRegion(src)

            ' 2) 画像処理実行.
            Dim points_ext As New FVIL.PNT_T_ARRAY()
            Dim points_int As New FVIL.PNT_T_ARRAY()
            FVIL.Region.[Function].GetBoundaryEx(region, points_ext, points_int)

            ' E) 確認.
            If True Then
                Dim image As New FVIL.Data.CFviImage()
                FVIL.Paint.[Function].DrawPoints(image, points_ext, 200.0)
                FVIL.Paint.[Function].DrawPoints(image, points_int, 100.0)
                FVIL.File.[Function].SaveImageFile(Defs.ResultDir & "/Region.GetBoundaryEx.png", image)
            End If
        End Sub
    End Class
End Namespace
C# Copy imageCopy
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;

namespace User.SampleCode.Region
{
    public partial class Function
    {

        /// <summary>
        /// リージョンの生成 (2値画像)
        /// </summary>
        public FVIL.Data.CFviRegion CreateRegion(FVIL.Data.CFviImage src)
        {
            // 1) インスタンスの準備.
            FVIL.Data.CFviRegion region = new FVIL.Data.CFviRegion();

            // 2) リージョンの生成.
            region.Create(src);

            // E) 生成されたリージョンの保存.
            region.Save(Defs.ResultDir + "/Region.CreateRegion.png");

            return region;
        }
    }
}


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

Namespace SampleCode.Region
    Public Partial Class [Function]

        ''' <summary>
        ''' リージョンの生成 (2値画像)
        ''' </summary>
        Public Function CreateRegion(src As FVIL.Data.CFviImage) As FVIL.Data.CFviRegion
            ' 1) インスタンスの準備.
            Dim region As New FVIL.Data.CFviRegion()

            ' 2) リージョンの生成.
            region.Create(src)

            ' E) 生成されたリージョンの保存.
            region.Save(Defs.ResultDir & "/Region.CreateRegion.png")

            Return region
        End Function
    End Class
End Namespace

Exceptions

ExceptionCondition
System..::..NullReferenceException引数に null が指定されました。
FVIL..::..CFviExceptionこの例外の原因については、上記のエラーコード表をご参照ください。

See Also