以下の機能で2点間の距離を求めることが出来ます。
スクリプト検査機能
白と茶の錠剤の距離を検査する例を作ってみました。
入力画像
タスクコネクション
白検出結果
茶検出結果
ランタイム評価画面からスクリプトタスクを有効にして以下のスクリプトを記述
例:白と茶の錠剤の距離を検査するスクリプト
// 検査をしない場合はnull 条件に一致する場合はtrue 条件に一致しない場合はfalse
bool? result = null;
// 白検出で得られた検査を通過したブロブリスト
var whiteBlobs = GetInspectedBlobs("白");
// 茶検出で得られた検査を通過したブロブリスト
var BrownBlobs = GetInspectedBlobs("茶");
// ブロブが存在する場合
if (whiteBlobs?.Any() == true && BrownBlobs?.Any() == true)
{
// 白錠剤のブロブ
var whiteBlob = whiteBlobs.First();
// 茶錠剤のブロブ
var brownBlob = BrownBlobs.First();
// 白錠剤の重心座標
var whitePoint = CreatePointD(whiteBlob.Centroid.X, whiteBlob.Centroid.Y);
// 茶錠剤の重心座標
var brownPoint = CreatePointD(brownBlob.Centroid.X, brownBlob.Centroid.Y);
// 白と茶の重心座標ペア
var pointPair = CreatePointPair(whitePoint, brownPoint);
// 表示
AddPointPair("白と茶", pointPair);
// 検査
if (pointPair.Distance >= 50)
{
result = true;
}
else
{
result = false;
}
}
// resultは必ず最後の行に記述してください
result
すると以下の画像のような結果が得られました。
今回の設定では距離が50pixel以上離れていると異常としました。
ちょっとコードを書かないといけないですが、
スクリプトタスクでは複数のタスクの結果にアクセスして、
自由度の高い検査が記述できます。
コードの例はご質問頂ければ記載できるので、是非ご相談ください。