Assembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public virtual List<CFviBlobData> GetList( IEnumerable<CFviBlobFilterRange> filters, IEnumerable<CFviBlobData> datas ) |
Visual Basic |
---|
Public Overridable Function GetList ( filters As IEnumerable(Of CFviBlobFilterRange), datas As IEnumerable(Of CFviBlobData) ) As List(Of CFviBlobData) |
Parameters
- filters
- Type: System.Collections.Generic..::..IEnumerable<(Of <(<'CFviBlobFilterRange>)>)>
取得条件フィルタ配列 (1≦要素数)
- datas
- Type: System.Collections.Generic..::..IEnumerable<(Of <(<'CFviBlobData>)>)>
ブローブデータ配列 (1≦要素数)
Return Value
Type: List<(Of <(<'CFviBlobData>)>)>引数 datas に指定されたブローブデータの内、指定の特徴量範囲に該当するブローブデータを System.Collections.Generic.List に格納して返します。 ブローブデータ配列は、このオブジェクトから取得したものを使用してください。 各ブローブデータとこのオブジェクトが持つハンドルが一致する必要があります。
filters に2種類以上のフィルタが指定されている時は、全ての条件の AND での評価となります。
Remarks
新しい開発では、データコピーのコストを削減した GetBlobList(IEnumerable<(Of <<'(CFviBlobFilterRange>)>>)) と RefilterList(IEnumerable<(Of <<'(CFviBlobFilterRange>)>>)) を使用してください。
内部では、下記の手順でフィルタリング処理が行われます。
- datas の複製を作成します。 -
- datas の複製の内、特徴量範囲に該当しないブローブデータの番号を 0 にします。 -
- ブローブ番号が 0 のブローブデータを除去します。 -
- 残ったブローブデータを System.Collections.Generic.List に格納して返します。 -
背景ブローブ及び無効ブローブは、ブローブ配列には含まれません。 また、 datas に格納されたブローブデータのハンドルが、 このオブジェクトが持つハンドルと異なる場合も除去されます。
このオブジェクトが保有するハンドルが無効な場合は例外を発行します。 また、 datas に格納されたブローブデータのハンドルが、このオブジェクトが持つハンドルと異なる場合もパラメータエラーとなります。 例外の原因と発生位置を特定するには、発行された例外クラスの ErrorCode メンバと Function メンバを参照してください。
エラーコード:
値 | ErrorCode メンバ | 内容 |
---|---|---|
51 | FVIL.ErrorCode.LICENSE_ERROR | ライセンスキーが見つからない為、実行できません。 または、 FVIL._SetUp.InitVisionLibrary が実行されていません。 |
12 | FVIL.ErrorCode.INVALID_OBJECT | ブローブ解析結果ハンドルが無効です。 |
11 | FVIL.ErrorCode.INVALID_PARAMETER | 引数が異常です。配列の要素数は1つ以上必要です。 または、引数 datas が持つハンドルとこのインスタンスが持つハンドルが一致しません。 |
1 | FVIL.ErrorCode.FAILED_TO_ALLOCATE | メモリが不足しています。 |
Examples
計測結果から、下記の条件に該当するブローブデータを取得します。
- 面積が 500~1000 -
- 重心(x) が 900~1300 -
C# | Copy |
---|---|
FVIL.Blob.CFviBlob blob = new FVIL.Blob.CFviBlob(); FVIL.Data.CFviImage image = new FVIL.Data.CFviImage(); : : (画像の取り込み等) : blob.SrcImages[0] = image; blob.Execute(); // (1) FVIL.Blob.CFviBlobFilterRange filter1 = new FVIL.Blob.CFviBlobFilterRange(); filter1.Type = FVIL.Blob.FeatureType.AREA; filter1.Min = 500; filter1.Max = 1000; System.Collections.Generic.List<FVIL.Blob.CFviBlobFilterRange> filters1 = new System.Collections.Generic.List<FVIL.Blob.CFviBlobFilterRange>(); filters1.Add( filter1 ); // ブローブデータ配列の取得 System.Collections.Generic.List<FVIL.Blob.CFviBlobData> datas1 = blob.Result.GetList( filters1 ); // (2) FVIL.Blob.CFviBlobFilterRange filter2 = new FVIL.Blob.CFviBlobFilterRange(); filter2.Type = FVIL.Blob.FeatureType.CENTERX; filter2.Min = 900; filter2.Max = 1300; System.Collections.Generic.List<FVIL.Blob.CFviBlobFilterRange> filters2 = new System.Collections.Generic.List<FVIL.Blob.CFviBlobFilterRange>(); filters2.Add( filter2 ); // ブローブデータ配列のフィルタリング System.Collections.Generic.List<FVIL.Blob.CFviBlobData> datas2 = blob.Result.GetList( filters2, datas1 ); |
Exceptions
Exception | Condition |
---|---|
FVIL..::..CFviException | この例外の原因については、上記のエラーコード表をご参照ください。 |