凸包(頂点座標)の取得

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

Syntax

C#
[ObsoleteAttribute("Please use CFviRegion.GetConvex2d")]
public static PNT_T_ARRAY GetConvex2d(
	CFviRegion region
)
Visual Basic
<ObsoleteAttribute("Please use CFviRegion.GetConvex2d")> 
Public Shared Function GetConvex2d ( 
	region As CFviRegion
) As PNT_T_ARRAY

Parameters

region
Type: FVIL.Data..::..CFviRegion
取得対象のリージョン

Return Value

Type: PNT_T_ARRAY
対象リージョンに外接する凸包の頂点座標を取得します。

Remarks

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

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


エラーコード:
ErrorCode メンバ内容
51FVIL.ErrorCode.LICENSE_ERROR ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。
12FVIL.ErrorCode.INVALID_OBJECTリージョンオブジェクトハンドルが無効です。
11FVIL.ErrorCode.INVALID_PARAMETERリージョンが無効です。
1FVIL.ErrorCode.FAILED_TO_ALLOCATEメモリ確保に失敗しました。
29FVIL.ErrorCode.NOT_CALCULABLE計算不可能です。

関連する FIE 関数:

fnFIE_region_calc_convex2d

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 GetConvex2d()
        {
            // 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 array = FVIL.Region.Function.GetConvex2d(region);

            // E) 確認.
            {
                FVIL.Data.CFviImage image = new FVIL.Data.CFviImage();
                FVIL.Paint.Function.DrawPoints(image, array, 200.0);
                FVIL.File.Function.SaveImageFile(Defs.ResultDir + "/Region.GetConvex2d.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 GetConvex2d()
            ' 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 array As FVIL.PNT_T_ARRAY = FVIL.Region.[Function].GetConvex2d(region)

            ' E) 確認.
            If True Then
                Dim image As New FVIL.Data.CFviImage()
                FVIL.Paint.[Function].DrawPoints(image, array, 200.0)
                FVIL.File.[Function].SaveImageFile(Defs.ResultDir & "/Region.GetConvex2d.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