周囲座標の取得
Namespace: FVIL.BlobAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
[ObsoleteAttribute("Please use CFviBlobData.GetBoundaryEx")] public static void GetBoundaryEx( CFviBlobData blob, int connection, PNT_T_ARRAY points_ext, PNT_T_ARRAY points_int ) |
Visual Basic |
---|
<ObsoleteAttribute("Please use CFviBlobData.GetBoundaryEx")> Public Shared Sub GetBoundaryEx ( blob As CFviBlobData, connection As Integer, points_ext As PNT_T_ARRAY, points_int As PNT_T_ARRAY ) |
Parameters
- blob
- Type: FVIL.Blob..::..CFviBlobData
取得対象の2値ブローブ解析データ
- connection
- Type: System..::..Int32
連結 (0:blob に従う、4:4連結、8:8連結)
- points_ext
- Type: FVIL..::..PNT_T_ARRAY
境界点列(外周) [不要な場合は null を指定してください]
- points_int
- Type: FVIL..::..PNT_T_ARRAY
境界点列(内周) [不要な場合は null を指定してください]
Remarks
ブローブの境界点列を取得します。
この関数は過去のバージョンとの互換性の為に残しています。 新しい開発では GetBoundaryEx(Int32, PNT_T_ARRAY, PNT_T_ARRAY) を使用してください。
処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
51 | FVIL.ErrorCode.LICENSE_ERROR | ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。 |
12 | FVIL.ErrorCode.INVALID_OBJECT | ブローブ解析結果ハンドルが無効です。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | ブローブ番号が無効です。 |
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリ確保に失敗しました。 |
関連する FIE 関数:
fnFIE_measure_get_boundary_ex
Examples
ソースコード:
C# | Copy |
---|---|
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 void GetBoundaryEx( /// FVIL.Blob.CFviBlobData blob, /// int connection, /// FVIL.PNT_T_ARRAY points_ext, /// FVIL.PNT_T_ARRAY points_int) /// </remarks> [FvPluginExecute] public void GetBoundaryEx() { // 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_ext = new FVIL.PNT_T_ARRAY(); FVIL.PNT_T_ARRAY points_int = new FVIL.PNT_T_ARRAY(); FVIL.Blob.Function.GetBoundaryEx(result[blobno],0,points_ext, points_int); FVIL.Paint.Function.DrawPoints(image, points_int, 150.0); FVIL.Paint.Function.DrawPoints(image, points_ext, 250.0); } FVIL.File.Function.SaveImageFile(Defs.ResultDir + "/Blob.Function.GetBoundaryEx.png", image); } } } |
Visual Basic | Copy |
---|---|
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 void GetBoundaryEx( ''' FVIL.Blob.CFviBlobData blob, ''' int connection, ''' FVIL.PNT_T_ARRAY points_ext, ''' FVIL.PNT_T_ARRAY points_int) ''' </remarks> <FvPluginExecute> _ Public Sub GetBoundaryEx() ' 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_ext As New FVIL.PNT_T_ARRAY() Dim points_int As New FVIL.PNT_T_ARRAY() FVIL.Blob.[Function].GetBoundaryEx(result(blobno), 0, points_ext, points_int) FVIL.Paint.[Function].DrawPoints(image, points_int, 150.0) FVIL.Paint.[Function].DrawPoints(image, points_ext, 250.0) Next FVIL.File.[Function].SaveImageFile(Defs.ResultDir & "/Blob.Function.GetBoundaryEx.png", image) End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
System..::..NullReferenceException | 引数に null が指定されました。 |
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |