ブローブ番号配列の取得
Namespace: FVIL.BlobAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public static UINT_ARRAY GetList( FHANDLE handle, IEnumerable<CFviBlobFilterRange> filters ) |
Visual Basic |
---|
Public Shared Function GetList ( handle As FHANDLE, filters As IEnumerable(Of CFviBlobFilterRange) ) As UINT_ARRAY |
Parameters
- handle
- Type: fvalgcli..::..FHANDLE
取得対象の2値ブローブ解析結果ハンドル
- filters
- Type: System.Collections.Generic..::..IEnumerable<(Of <(<'CFviBlobFilterRange>)>)>
取得条件フィルタのリスト
Return Value
Type: UINT_ARRAY引数に指定されたハンドルが持つブローブの内、指定の特徴量範囲に該当するブローブの番号を配列に格納して返します。
filters が null または 要素数 0 の場合は、 GetList(FHANDLE) と同様に全ての有効ブローブを取得します。
Remarks
この関数は CFviBlobResult.GetList(IEnumerable<(Of <<'(CFviBlobFilterRange>)>>)) の改良版です。 データコピーやインスタンス生成のコストを削減できるため、高速に取得できます。
処理に失敗した場合は例外を発行します。 例外の原因と発生位置を特定するには、発行された例外クラスの 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_list
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 FVIL.UINT_ARRAY GetList( /// fvalgcli.FHANDLE handle, /// System.Collections.Generic.IList<CFviBlobFilterRange> filters) /// </remarks> [FvPluginExecute] public void GetList2() { // 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) 処理結果の取得. { // -- フィルタの生成. List<FVIL.Blob.CFviBlobFilterRange> filters = new List<FVIL.Blob.CFviBlobFilterRange>(); for (int i = 0; i < 3; i++) filters.Add(new FVIL.Blob.CFviBlobFilterRange()); // --- filters[0].Type = FVIL.Blob.FeatureType.AREA; filters[0].Min = 1000; filters[0].Max = 8000; // --- filters[1].Type = FVIL.Blob.FeatureType.COLOR; filters[1].Min = 0; filters[1].Max = 0; // --- filters[2].Type = FVIL.Blob.FeatureType.RECT2LRATIO; filters[2].Min = 0.8; filters[2].Max = 1.2; FVIL.UINT_ARRAY blobs = FVIL.Blob.Function.GetList(result.Handle, filters); Console.Out.WriteLine(" --- FVIL.Blob.Function.GetList() filter有"); Console.Out.WriteLine(" Count = {0}", blobs.Count); } } } } |
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 FVIL.UINT_ARRAY GetList( ''' fvalgcli.FHANDLE handle, ''' System.Collections.Generic.IList<CFviBlobFilterRange> filters) ''' </remarks> <FvPluginExecute> _ Public Sub GetList2() ' 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) 処理結果の取得. If True Then ' -- フィルタの生成. Dim filters As New List(Of FVIL.Blob.CFviBlobFilterRange)() For i As Integer = 0 To 2 filters.Add(New FVIL.Blob.CFviBlobFilterRange()) Next ' --- filters(0).Type = FVIL.Blob.FeatureType.AREA filters(0).Min = 1000 filters(0).Max = 8000 ' --- filters(1).Type = FVIL.Blob.FeatureType.COLOR filters(1).Min = 0 filters(1).Max = 0 ' --- filters(2).Type = FVIL.Blob.FeatureType.RECT2LRATIO filters(2).Min = 0.8 filters(2).Max = 1.2 Dim blobs As FVIL.UINT_ARRAY = FVIL.Blob.[Function].GetList(result.Handle, filters) Console.Out.WriteLine(" --- FVIL.Blob.Function.GetList() filter有") Console.Out.WriteLine(" Count = {0}", blobs.Count) End If End Sub End Class End Namespace |
Exceptions
Exception | Condition |
---|---|
System..::..NullReferenceException | 引数に null が指定されました。 |
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |