周囲座標(External)の取得

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

Syntax

C#
[ObsoleteAttribute("Please use CFviBlobData.GetBoundary")]
public static PNT_T_ARRAY GetBoundary(
	CFviBlobData blob
)
Visual Basic
<ObsoleteAttribute("Please use CFviBlobData.GetBoundary")> 
Public Shared Function GetBoundary ( 
	blob As CFviBlobData
) As PNT_T_ARRAY

Parameters

blob
Type: FVIL.Blob..::..CFviBlobData
取得対象の2値ブローブ解析データ

Return Value

Type: PNT_T_ARRAY
ブローブの境界点列(外周)を取得します。

Remarks

この関数は過去のバージョンとの互換性の為に残しています。 新しい開発では GetBoundary()()()() を使用してください。

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


エラーコード:
ErrorCode メンバ内容
51FVIL.ErrorCode.LICENSE_ERROR ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。
12FVIL.ErrorCode.INVALID_OBJECTブローブ解析結果ハンドルが無効です。
11FVIL.ErrorCode.INVALID_PARAMETERブローブ番号が無効です。
1FVIL.ErrorCode.FAILED_TO_ALLOCATEメモリ確保に失敗しました。

関連する FIE 関数:

fnFIE_measure_get_boundary

Examples

ソースコード:
C# Copy imageCopy
using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Reflection;
using fvalgcli;    // FvPluginXXXX attribute requires fvalgcli

namespace User.SampleCode
{
    public partial class Blob
    {
        // ============================================================
        /// <summary>
        /// FVIL.Blob.Function クラス.
        /// </summary>
        /// <remarks>
        /// public static FVIL.PNT_T_ARRAY GetBoundary(FVIL.Blob.CFviBlobData blob)
        /// </remarks>
        [FvPluginExecute]
        public void GetBoundary()
        {
            try
            {
                // 1) インスタンスの準備.
                FVIL.Blob.CFviBlob parser;
                FVIL.Blob.CFviBlobResult result = new FVIL.Blob.CFviBlobResult();
                FVIL.Data.CFviImage src = new FVIL.Data.CFviImage();

                // 2) 処理対象画像の取り込み.
                FVIL.File.Function.LoadImageFile(Defs.TestImageDir + "/blob_BIN.png", src, FVIL.PixelMode.Unpacking);

                // 3) 処理対象画像の有効性検査.
                int valid = FVIL.Blob.CFviBlob.CheckValidity(src);
                if (valid != FVIL.ErrorCode._SUCCESS)
                    throw new FVIL.CFviException(valid, "FVIL.Blob.CFviBlobFunction.CheckValidity");

                // 4) 画像処理実行.
                parser = new FVIL.Blob.CFviBlob(src, result);
                parser.Execute();

                // E) 確認.
                FVIL.Data.CFviImage image = new FVIL.Data.CFviImage();

                for (uint blobno = 1; blobno < result.Count; blobno++)
                {
                    FVIL.PNT_T_ARRAY points = FVIL.Blob.Function.GetBoundary(result[blobno]);

                    FVIL.Paint.Function.DrawPoints(image, points, 200.0);
                }

                FVIL.File.Function.SaveImageFile(Defs.ResultDir + "/Blob.Function.GetBoundary.png", image);
            }
            catch (FVIL.CFviException ex)
            {
                Assert.Fail(" <CFviException> Function:{0} ErrorCode={1}\n\n", ex.Function, ex.ErrorCode);
            }
            catch (Exception ex)
            {
                Assert.Fail(" <System.Exception> {0}\n\n", ex.Message);
            }
        }

    }
}


Visual Basic Copy imageCopy
Imports System.Collections.Generic
Imports System.Text
Imports System.Drawing
Imports System.Reflection
Imports fvalgcli
' FvPluginXXXX attribute requires fvalgcli
Namespace SampleCode
    Public Partial Class Blob
        ' ============================================================
        ''' <summary>
        ''' FVIL.Blob.Function クラス.
        ''' </summary>
        ''' <remarks>
        ''' public static FVIL.PNT_T_ARRAY GetBoundary(FVIL.Blob.CFviBlobData blob)
        ''' </remarks>
        <FvPluginExecute> _
        Public Sub GetBoundary()
            Try
                ' 1) インスタンスの準備.
                Dim parser As FVIL.Blob.CFviBlob
                Dim result As New FVIL.Blob.CFviBlobResult()
                Dim src As New FVIL.Data.CFviImage()

                ' 2) 処理対象画像の取り込み.
                FVIL.File.[Function].LoadImageFile(Defs.TestImageDir & "/blob_BIN.png", src, FVIL.PixelMode.Unpacking)

                ' 3) 処理対象画像の有効性検査.
                Dim valid As Integer = FVIL.Blob.CFviBlob.CheckValidity(src)
                If valid <> FVIL.ErrorCode._SUCCESS Then
                    Throw New FVIL.CFviException(valid, "FVIL.Blob.CFviBlobFunction.CheckValidity")
                End If

                ' 4) 画像処理実行.
                parser = New FVIL.Blob.CFviBlob(src, result)
                parser.Execute()

                ' E) 確認.
                Dim image As New FVIL.Data.CFviImage()

                For blobno As UInteger = 1 To CType(result.Count - 1, UInteger)
                    Dim points As FVIL.PNT_T_ARRAY = FVIL.Blob.[Function].GetBoundary(result(blobno))

                    FVIL.Paint.[Function].DrawPoints(image, points, 200.0)
                Next

                FVIL.File.[Function].SaveImageFile(Defs.ResultDir & "/Blob.Function.GetBoundary.png", image)
            Catch ex As FVIL.CFviException
                Assert.Fail(" <CFviException> Function:{0} ErrorCode={1}" & vbLf & vbLf, ex.[Function], ex.ErrorCode)
            Catch ex As Exception
                Assert.Fail(" <System.Exception> {0}" & vbLf & vbLf, ex.Message)
            End Try
        End Sub

    End Class
End Namespace

Exceptions

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

See Also