save-images

このサンプルプラグインでは、データコンテナ API の使用法を示しています。プラグインを実行すると、MVApp 結果 に含まれる画像データが、ディスク上の構成可能なディレクトリに自動的に保存されます。このプラグインは、画像フォーマット、出力ディレクトリ構造、画像を出力する条件などをカスタマイズするための豊富な構成オプションを提供します。このプラグインのソースコードは、MERLIC インストールディレクトリの「examples\communication_plugins\save-images」ディレクトリにあります。

プラグインの使用方法

このプラグインは、「action-sender」サンプルプラグインと組み合わせてテストできます。「action-sender」プラグインでアクションを送信し、「save-images」プラグインで画像結果をディスクに保存できます。

レシピで参照する MERLIC Vision App は、画像結果を表す少なくとも 1 つの MVApp 結果 が必要であることに留意してください。画像結果が MVApp 結果 に追加されていない場合、サンプルプラグインから画像を取得することはできません。

  1. MERLIC RTE Setup を開き、「レシピ」タブに移動します。
  2. 画像結果を表す少なくとも 1 つの MVApp 結果 を含む MERLIC Vision App を参照するレシピをインポートします。テスト用に、サンプルレシピの「verify_chip_number_recipe.mrcp」を使用することもできます。
  3. レシピをデフォルトのレシピとして設定します。プラグインの起動時にこのステップをスキップしてレシピがデフォルトとして設定されていない場合は、「action-sender」プラグインからコマンド「python.exe comm-send.py PrepareRecipe <Recipe ID>」を使用して、つまりステップ 9 以降に、手動でレシピを読み込む必要があります。
  4. 通信」タブに切り替え、MERLIC RTE を起動します。MERLIC RTE の実行中はプラグインの構成サービスを使用できます。
  5. 左側にあるプラグインインスタンスのリストに「save-images」プラグインを追加します。

  6. プラグインの構成を確認します。詳細については、「プラグインの構成」セクションを参照してください。
  7. MERLIC RTE Setup の下部にある「プラグインの起動」ボタンをクリックするか、左側のプラグインインインスタンスリストの各メニューから、プラグインの実行を開始します。プラグインを開始する方法と停止する方法の詳細については、「通信プラグインの開始および停止」を参照してください。
  8. save-images」プラグインと同様に「action-sender」プラグインを追加・起動します。
  9. コマンドプロンプトを開き、「action-sender」プラグインのディレクトリ、つまり MERLIC のインストールディレクトリの「examples\communication_plugins\action-sender」ディレクトリに移動します。
  10. Python スクリプト「comm-send.py」を使用して、以下のように 1 回の実行を開始します。MVApp が 1 回実行されると画像の結果が取得され、定義されたディレクトリに保存されます。「python.exe comm-send.py --help」と入力して、詳細な使い方を確認することもできます。
    コピー
    python.exe comm-send.py StartSingleJob
  11. save-images」プラグインの構成で定義したディレクトリに保存された画像を確認します。

プラグインの構成

サンプルプラグインは、MERLIC RTE Setup の「通信」タブで構成できます。MERLIC RTE Setup を開いてプラグインを追加するだけで、プラグインで使用できる構成項目が表示されます。構成を有効にするには、まず MERLIC RTE を起動する必要があることに留意してください。

通信」タブの右側には、選択したプラグインのパラメーターが表示されます。以下では、セクション「User parameters」のパラメーターのみを説明します。構成可能なのはこれだけです。

Image Settings

Image format

このパラメーターは、MVApp の結果の画像をどのフォーマットで保存するかを定義します。選択された画像のフォーマットが青くハイライト表示されています。別のフォーマットを選択するには、それぞれの画像フォーマットをクリックします。選択した画像フォーマットによっては、追加のパラメーターも構成可能になります。利用可能な画像フォーマットについては、以下の表を参照してください。デフォルト設定値は「JPEG」です。

フォーマット

説明

PNG

画像が PNG 画像として保存されます。このフォーマットを選択する場合、パラメーター PNG compression が有効になって構成できます。

JPEG

画像が JPEG 画像として保存されます。このフォーマットを選択する場合、次の追加パラメーターが有効になります:

HALCON Serialized Item

画像が HALCON Serialized Item として保存され、ファイル名には .hse 拡張子が付きます。これはプロプライエタリフォーマットなので、MVTec HALCON も扱っているユーザーでなければ使用できません。HDevelop でこのフォーマットのファイルを読み込みたい場合は、次のようなコードスニペットを使用する方法かがあります。

コピー
open_file('<file path to .hse>', 'input_binary', FileHandle)
fread_serialized_item(FileHandle, SerializedItemHandle)
deserialize_object(Object, SerializedItemHandle)

open_file('<file path to .hse>', 'input_binary', FileHandle)

fread_serialized_item(FileHandle, SerializedItemHandle)

deserialize_object(Object, SerializedItemHandle)

一般に的に「byte」、「int1」、「uint2」、「int2」、「int4」、「int8」、「real」タイプの画像はすべて、MVApp 結果 としてエクスポートでき、使用可能な画像フォーマットに変換できます。ただし、タイプ「real」の画像は「HALCON Serialized Item」フォーマットにしか変換できないため、例外です。画像フォーマットとそれぞれのピクセル変換の詳細については、通信プラグインの構成画像の結果セクションを参照してください。

Use progressive JPEG

このパラメーターは、「Image format」が「JPEG」に設定されている場合にのみ使用可能です。画像をプログレッシブ JPEG として保存するかどうかを定義します。デフォルトでは、このパラメーターは設定されていません。

JPEG quality

このパラメーターは、「Image format」が「JPEG」に設定されている場合にのみ使用可能です。JPEG に圧縮する際の画質をパーセントで定義します。デフォルト設定値は 50% です。

PNG compression

このパラメーターは、「Image format」が「PNG」に設定されている場合にのみ使用可能です。PNG に圧縮する際のレベルで定義します。設定可能な値は 0~9 です。デフォルト設定値は 6 です。

Image zoom mode

このパラメータでは、結果の偽造のサイズを変更できます。利用可能なオプションは下の表のとおりです。選択したモードによっては、追加のパラメーターも構成可能になります。パラメーターの設定値はデフォルトで「None」です。

モード

説明

None

画像がズームなしに元のサイズで保存されます。

Fixed width and height

画像は、パラメーター Image width および Image height で指定されたサイズに変更されます。これらのパラメーターは、このオプションを選択するとすぐに使用できるようになります。指定されたサイズは、元のサイズにかかわらずすべての結果の画像に適用され、アスペクト比は維持されません。

Zoom factor

画像は、パラメーター Image zoom factor で係数に応じた縦横比でサイズが変更されます。このパラメーターは、このオプションを選択するとすぐに使用できるようになります。このオプションでは、画像の元のサイズに比例してアスペクト比が維持されます。

Image width

このパラメーターは、「Image zoom mode」が「Fixed width and height」に設定されている場合にのみ使用可能です。結果の画像の幅を定義します。したがって、すべての画像が「Image width」と「Image height」で定義された指定サイズで公開されます。指定されたサイズは、元のサイズにかかわらずすべての画像に適用され、アスペクト比は維持されません。デフォルト設定値は「512 px」です。

Image height

このパラメーターは、「Image zoom mode」が「Fixed width and height」に設定されている場合にのみ使用可能です。結果の画像の高さを定義します。したがって、すべての画像が「Image width」と「Image height」で定義された指定サイズで公開されます。指定されたサイズは、元のサイズにかかわらずすべての画像に適用され、アスペクト比は維持されません。デフォルト設定値は「512 px」です。

Image zoom factor

このパラメーターは、「Image zoom mode」が「Zoom factor」に設定されている場合にのみ使用可能です。縦横の比を維持して画像のサイズを変更する際に使用されるパーセンテージを定義します。100% 以上の値を指定できます。デフォルト設定値は 100% で、元の画像サイズが維持されます。

Conditional Output

Output condition

このパラメーターは、特定の MVApp 結果 の値に基づいて画像の検索結果を取得するかどうかを定義します。デフォルトでは「Always」に設定されており、画像は MVApp 結果 の値にかかわらず保存されます。このオプションはさまざまなユースケースに使用できます。たとえば、品質検査の場合、悪い品質が検出された反復の画像のみを保存したい場合などです。

条件

説明

Always

画像の結果は、MVApp 結果 の値にかかわらず常に保存されます。

On result true

特定の MVApp 結果 の値が「true」の場合のみ、画像の結果が保存されます。値の確認が必要な MVApp 結果 の名前は、パラメーター Result name で定義できます。「Output condition」が「On result true」に設定されると同時に利用可能になります。

結果の値のタイプによって、出力条件が「true」に設定されるケースは異なります。

  • ブール値の結果: 値が 1 の場合、出力条件は「true」に設定され、画像が保存されます。
  • 数値: 値が 0 でない場合、出力条件は「true」となり、画像が保存されます。
  • 文字列値: 文字列が空でない場合、出力条件は「true」となり、画像が保存されます。

On result false

特定の MVApp 結果 の値が「false」の場合のみ、画像の結果が保存されます。値の確認が必要な MVApp 結果 の名前は、パラメーター Result name で定義できます。「Output condition」が「On result false」に設定されると同時に利用可能になります。

結果の値のタイプによって、出力条件が「false」に設定されるケースは異なります。

  • ブール値の結果: 値が 0 の場合、出力条件は「false」に設定され、画像が保存されます。
  • 数値: 値が 0 の場合、出力条件は「false」に設定され、画像が保存されます。
  • 文字列値: 文字列が空の場合、出力条件は「false」となり、画像が保存されます。
Result name

このパラメーターは、パラメーター「Output condition」が「On result false」または「On result true」に設定されている場合にのみ使用可能です。値の確認が必要な MVApp 結果 の名前を入力できます。「Output condition」のパラメーター設定の条件に値が一致する場合、画像が取得して保存されます。

Output

Image result filter mode

このパラメーターを使用すると、どの画像の結果を取得するかを決定するフィルターを有効化できます。以下のオプションから選択できます。デフォルト設定値は「None」です。

モード

説明

None

フィルタリングは適用されず、すべての結果の画像が取得されます。

Regular expression

パラメーター Result name filter regex で指定された正規表現に一致する名前の結果の画像のみが取得されます。

Result name filter regex

このパラメーターを使用すると、正規表現を指定して、保存する必要のある結果の画像の名前をフィルタリングできます。パラメーター「Image result filter mode」のフィルターモードが「Regular expression」に設定されている場合のみ提供されます。そうすると、正規表現に一致する名前の結果の画像だけが保存されます。デフォルト設定値は「.*」で、任意の文字列に一致します。

Base directory

このパラメーターは、画像の結果を保存するディレクトリを定義します。 ボタンを介してファイルシステムからディレクトリを選択することも (ローカルシステムの場合)、テキストフィールドに直接パスを入力することもできます。デフォルトでは、Windows システムでは「%LOCALAPPDATA%/Temp」に、Linux システムでは「/tmp」に設定されています。また、画像の結果を特定フォーマットのサブディレクトリに保存することもできます。これは、パラメーター Subdirectory format で行うことができます。

Subdirectory format

このパラメーターは、画像の結果を保存するサブディレクトリのフォーマットを定義します。デフォルト設定値は「Recipe ID」です。

フォーマット

説明

None

サブディレクトリは作成されません。画像の結果は、パラメーター「Base directory」で定義された場所に直接保存されます。

Recipe ID

サブディレクトリは現在準備されているレシピの ID、つまり実行される MVApp を参照するレシピの名前です。

Date

サブディレクトリ名は実行時点の日付に従って付けられます。日付は次のようなフォーマットです: {year}-{month:02}-{day:02} (たとえば「2022-07-18」)。

Date and recipe ID

サブディレクトリ名は、現在の日付と現在準備されているレシピの ID に従って付けられます。結果として、ディレクトリ名は次のようにフォーマットされます: {year}-{month:02}-{day:02}--{recipeId} (たとえば「2022-07-18--6」)。

Custom

このオプションでは、ディレクトリの名前にカスタムフォーマットを使用できます。使用するフォーマットは、パラメーター Subdirectory format string で定義でき、これは「Custom」を選択するとすぐに使用可能になります。

Subdirectory format string

このパラメーターは、「Subdirectory format」が「Custom」に設定されている場合にのみ使用可能です。このパラメーターを使用すると、画像の結果を保存するサブディレクトリの名前をカスタムフォーマットで定義できます。サブディレクトリの名前を入力フィールドに入力するか、レシピ ID などの特定の値を表すプレースホルダーを使用して名前を定義できます。このようなプレースホルダーは、中括弧で定義する必要があり、そのように定義しなかった場合は通常の文字列として解釈されます。

次の表は使用可能なプレースホルダーのまとめです。

フォーマット文字列のプレースホルダー

データフォーマット

説明

{recipeId}

String

現在準備中のレシピの ID。

{resultId}

Integer

取得された画像結果の ID。

{resultName}

String

それぞれの MVApp 画像の結果の名前、つまり MERLIC CreatorMVApp 結果 に画像の結果を追加する際に定義された名前です。MVApp 画像の結果が複数ある場合は、複数のサブディレクトリが作成されます。それぞれの MVApp 画像の結果に対して、それぞれの名前が付けられます。

{dataIndex}

Integer

MVApp 画像の結果のインデックス。MERLIC Creator の「MVApp パラメーターおよび結果」パネルで MVApp 画像の結果に割り当てられている位置番号に対応し ます。

{year}

Integer

実行時点の年。

{month}

Integer

実行時点の月。

{day}

Integer

実行時点の日。

{hour}

Integer

実行時点の時。

{minute}

Integer

実行時点の分。

{second}

Integer

実行時点の秒。

{millisecond}

Integer

実行時点のミリ秒。

{<NAME_OF_MVAPP_RESULT>}

String

"<NAME_OF_MVAPP_RESULT>" という名前で MVApp 結果 として定義されている指定ツール結果の値です。このフォーマットは、サブディレクトリの名前に含まれるツール結果の値を使ったり、追加したりしたい場合に有効でて。したがって、画像を表さない MVApp 結果 の名前しか指定できません。このフォーマット文字列を使用するときは、それぞれのツール結果の名前ではなく、MVApp 結果 の名前を使用するように留意してください。

{measId}

String

画像結果を生成したジョブに割り当てられている測定 ID、または何も指定されていない場合は「ヌル」。

{partId}

String

画像結果を生成したジョブに割り当てられているパーツ ID、または何も指定されていない場合は「ヌル」。

時間指定のプレースホルダーはすべて UTC 時間です。プレースホルダーには、追加のフォーマット指定子、つまり {<placeholder>:<format specifier>} を使用して、正確な名前を構成することもできます。たとえば、「Subdirectory format」を「Date」に設定した場合、以下のようなプレースホルダーとフォーマット指定子が使用されます。{year}-{month:02}-{day:02}.使用可能なフォーマット指定子の詳細については、{fmt}フォーマットライブラリのドキュメンテーションを参照してください。

File name format

このパラメーターは、保存された画像の結果のファイル名のフォーマットを定義します。デフォルト設定値は「Result ID and data index」です。

フォーマット

説明

Result ID and data index

ファイル名は結果 ID とデータインデックスで構成されます。

Time and data index

ファイル名は、現在の UTC 時刻とデータインデックスで構成されます (たとえば「13-20-00-831--0.jpg」)。

Time and result name

ファイル名は、現在の UTC 時刻とそれぞれの MVApp 画像で構成されます (たとえば「13-20-00-831--Heatmap.jpg」)。

Result ID and result name

ファイル名は、それぞれの画像の結果の結果 ID と、対応する MVApp 画像結果の名前で構成されます (たとえば「37-Heatmap.jpg」)。

Custom

このオプションでは、ファイル名前カスタムフォーマットを使用できます。使用するフォーマットは、パラメーター File name format string で定義でき、これは「Custom」を選択するとすぐに使用可能になります。

File name format string

このパラメーターは、「File name format」が「Custom」に設定されている場合にのみ使用可能です。このパラメーターを使用すると、画像の結果のファイル名にカスタムフォーマットを定義することができます。ファイル名を入力フィールドに入力するか、レシピ ID などの特定の値を表すプレースホルダーを使用して名前を定義できます。このようなプレースホルダーは、中括弧で定義する必要があり、そのように定義しなかった場合は通常の文字列として解釈されます。使用可能なプレースホルダーの詳細については、パラメーター Subdirectory format string の説明を参照してください。