形状抽出タスクで算出した面積をスクリプト検査でcsvに保存する方法

形状抽出タスクで算出した面積を、スクリプト検査でcsvに保存する方法を紹介いたします。

錠剤を形状抽出で検出して面積をcsvファイルに保存する例

  1. 錠剤検出用の領域検出タスクを追加(画像を入力として形状抽出のみで輪郭が取れる場合は不要)
    image

  2. 錠剤検出のアノテーション及び学習
    ここでは結果だけ表示します。

  3. 錠剤輪郭の形状抽出を追加

  4. 入力輪郭の入力タイプをスコアマップに変更

  5. 面積の追加

  6. ランタイム評価画面を開く

  7. スクリプト検査設定を開いてスクリプトを記述

以下がスクリプトになります。

using System.Text;

// ファイル番号
static int fileCount = 0;

// 拡張子
const string extension = ".csv";

// 保存先
const string saveDirectory = "D:/work/debug";

// 検査をしない場合はnull 条件に一致する場合はtrue 条件に一致しない場合はfalse
bool? result = null;

// 輪郭情報
var contourOutputs = GetContourOutputs("錠剤形状抽出");

// 輪郭情報が存在する時
if (contourOutputs?.Any() == true)
{
        // ファイル名
        var fileName = fileCount.ToString("D8") + extension;
        // 保存パス
        var path = Path.Combine(saveDirectory, fileName + extension);
        // 書き込み開始
        using (var sw = new StreamWriter(path, false, Encoding.UTF8))
        {
            // ヘッダー
            sw.WriteLine("ID,面積,X,Y,幅,高さ");
            var i = 1;
            foreach (var contourOutput in contourOutputs)
            {
                sw.Write(i);
                sw.Write(",");
                sw.Write(contourOutput.Area);
                sw.Write(",");
                sw.Write(contourOutput.Blob.X);
                sw.Write(",");
                sw.Write(contourOutput.Blob.Y);
                sw.Write(",");
                sw.Write(contourOutput.Blob.Width);
                sw.Write(",");
                sw.WriteLine(contourOutput.Blob.Height);
                i++;
            }
        }
        fileCount++;
}

// resultは必ず最後の行に記述してください
result
  1. スクリプトを保存した後にスクリプト検査をチェック

すると以下のようにcsvファイルが保存されます。
image
ファイルを開くと以下のように書き込まれています。
image

「いいね!」 1