CurrentResult プロパティー

適用
ビジョンオブジェクト: ArcFinder、ArcInspector、Blob、BoxFinder、CodeReader、ColorMatch、Contour、Coordinates、CornerFinder、Correlation、DefectFinder、Edge、Frame、Geometric、Line、LineFinder、LineInspector、OCR、Polar、Point、Text

解説
オブジェクトウィンドウのリザルトリストに表示するリザルト、または、複数のリザルトを検出するデータを返すリザルトを定義します。

用法

VGet  Sequence.Object.CurrentResult, var
VSet  Sequence.Object.CurrentResult, value
Sequence
シーケンス名かシーケンス名を示す文字列変数
Object
オブジェクト名かオブジェクト名を示す文字列変数。オブジェクトは指定されたシーケンスに存在していなければなりません。
var
プロパティーの値を示す整数変数
value
プロパティーの新しい値を示す整数または式


有効範囲:1からNumberOfResutsプロパティーの値

デフォルト: 1

詳細説明
各オブジェクトは、NumberToFindプロパティーを1以上の同じ値に設定することで複数のリザルト検出をサポートしています。CurrentResultプロパティーは、その複数検出された中でどのリザルトを使うか定義します。

検出したいリザルトが1個の場合は(NumberToFindプロパティーで設定した値が「1」の場合は)、CurrentResultプロパティーは、自動的に「1」に設定されます。

Vision Guideウィンドウで使っているときは、オブジェクトウィンドウのリザルトリストに「検出結果1/15」といった表示が出てきます。それは、システムが(NumberToFindプロパティーの設定に従って)15の対象物を検出しようとし、そのうちの1アイテムに対するリザルトをリザルトリストに表示していることを意味します。

他のリザルトを見たい場合は、CurrentResultプロパティーの値を、チェックしたいリザルトに変更します。

リザルトは、Sortプロパティーの設定にしたがって並べられます。

ArcInspector、Blob、DefectFinder、LineInspectorオブジェクトのリザルトは、SizeToFindにより、デフォルトで大きいブローブから小さいブローブの順番で表示されます。Result 1 (CurrentResult = 1)には一番大きいブローブのリザルトが表示されます。

Correlationオブジェクト、Edge、Geometricオブジェクトのリザルトは、デフォルトでスコアの高い順に表示されます。Result 1 (CurrentResult = 1)には、スコアがもっとも高い対象物のリザルトを表示します。

参照
ArcFinderオブジェクト, ArcInspectorオブジェクト, Blobオブジェクト, Correlationオブジェクト, DefectFinderオブジェクト, Edgeオブジェクト, Found リザルト, Geometricオブジェクト, OCRオブジェクトBoxFinderオブジェクト, Contourオブジェクト, CornerFinderオブジェクト, Textオブジェクト, Coordinatesオブジェクト, NumberToFind プロパティー, NumberFound リザルト, Sort プロパティー

使用例
下記はSPEL+言語を使って、"Blob01"という名前のBlobオブジェクトを示す、"mtest"というビジョンシーケンスを実行する例です。"Blob01" は、1回のサーチウィンドウで複数(3つ)のブローブを検出するよう定義されています。(mtest.Blob01.NumberToFind = 3)

下記プログラムは、シーケンスを実行し、"Blob01" に対して適正な数(3)の対象物が検出されたか確認し、その後Areaリザルトを降順に出力します。

Function main
  # define NUM_TO_FIND  3
  Integer foundCount, area
  VRun mtest
  VGet mtest.Blob01.NumberFound, foundCount
  If foundCount = NUM_TO_FIND Then
    Print "The correct number of blobs were found"
  Else
    Print "Only (", found, ") blobs were found"
  EndIf
  VSet mtest.Blob01.CurrentResult, 1
  VGet mtest.BLOB01.Area, area
  Print "1st blob area =", area, "pixels"

  VSet mtest.Blob01.CurrentResult, 2
  VGet mtest.Blob01.Area, area
  Print "2nd blob area =", area, "pixels"

  VSet mtest.Blob01.CurrentResult, 3
  VGet mtest.Blob01.Area, area
  Print "3rd blob area =", area, "pixels"
Fend