HDevEngineによる結果を評価
パラメータ説明
プログラムの設定
設定可能なパラメータは下図の通りです。
- hDevプログラムのパス
-
パラメータ説明:このパラメータは、hDevプログラムのパス(Halconのメインプログラムのパス)を設定するために使用されます。
- 外部プロシージャフォルダ
-
パラメータ説明:このパラメータは、Halconの外部関数に格納されているフォルダのパスを設定するために使用されます(セミコロン「;」で区切られた複数のパスを含めることができます)。
- プロシージャ名
-
パラメータ説明:このパラメータは、外部関数名を設定するために使用されます。パラメータドロップダウンリストから選択できます。
デバッグ設定
設定可能なパラメータは下図の通りです。
- オンラインデバッグ
-
パラメータ説明:このパラメータにチェックを入れると、デバッグサーバーが起動されます。ユーザーは、Halconソフトウェア内で、Mech-Visionから受信したデータをリアルタイムで表示し、プログラムをデバッグすることができます。
初期値:チェックを入れない。
調整説明:オンラインデバッグ にチェックを入れた後、Halconソフトウェアのメニューバーで
を選択し、ポップアップウィンドウで OK をクリックする必要があります。そうしないと、Halconでデバッグサーバーを起動できません。Halconソフトウェアでデバッグサーバーが起動されないと、Mech-Vision実行中にラグが発生することがあります。調整アドバイス:実際の状況に応じて設定してください。
入力設定
設定可能なパラメータは下図の通りです。
入力設定 は、プロシージャ名 が設定された後にのみ設定可能です。 |
- 入力ポート名
-
パラメータ説明:このパラメータは、このステップの入力ポートのデータ型を設定するために使用されます。
- 入力制御変数名
-
パラメータ説明:このパラメータは、入力制御変数パラメータの名前リストを設定するために使用されます。
- 入力画像変数名
-
パラメータ説明:このパラメータは、入力画像変数パラメータの名前リストを設定するために使用されます。
出力設定
設定可能なパラメータは下図の通りです。
- 出力ポート名
-
パラメータ説明:このパラメータは、このステップの出力ポートのデータ型を設定するために使用されます。
- 出力制御変数名
-
パラメータ説明:このパラメータは、出力制御変数パラメータの名前リストを設定するために使用されます。
- 出力画像変数名
-
パラメータ説明:このパラメータは、出力画像変数パラメータの名前リストを設定するために使用されます。
使用説明
事前準備
このステップを使用するには、以下の要件を満たす必要があります。いずれかの条件を満たさない場合、このステップがステップライブラリに表示できません。
-
ライセンス付きのHalconソフトウェアがコンピューターにインストールされています。
-
Halconソフトウェアの
インストールディレクトリ\bin\x64-win64
からdllファイル(下図に示す)をMech-Visionのインストールディレクトリにコピーします。Mech-Visionが起動されている場合、Mech-Visionを再起動しないと有効になりません。
対応可能なHalconプログラムの呼び出し方式
-
Mech-VisionでHDevメインプログラムを呼び出し、メインプログラムには外部関数はありません。
-
Mech-VisionでHDevメインプログラムを呼び出し、メインプログラムにはいくつかの外部関数があります。
-
Mech-Visionで外部関数を1つだけ呼び出します。
対応可能なHalconデータ型の変換説明
Mech-Visionプロジェクトでは、他のステップはこのステップにデータを入力する際に、Mech-Visionデータ型はHalconデータに変換されます。このステップは他のステップにデータを出力する際に、Halconデータ型はMech-Visionデータ型に変換されます。
対応可能なデータ型の変換説明は以下の通りです。
-
画像変数型
Halconデータ型 | Mech-Visionデータ型 | 詳細 |
---|---|---|
Image |
Image |
Mech-Visionデータ型とHalconデータ型との相互変換が可能です。 |
-
制御変数型
Halconデータ型 | Mech-Visionデータ型 | 詳細 |
---|---|---|
Tuple |
NumberList、String、StringList、Variant、VariantList |
他のステップはこのステップにデータを入力する際に、入力したMech-Visionデータ型は複数型のTupleデータ型に変換することができます。このステップは他のステップにデータを出力する際に、単一型のTupleデータ型をMech-Visionデータ型に変換することに対応しますが、複数型のデータ型の変換は対応していません。 |
integer |
NumberList |
このステップが他のステップにデータを出力するときのみ、Halconデータ型はMech-Visionデータ型に変換されることに対応します。 |
real |
NumberList |
このステップが他のステップにデータを出力するときのみ、Halconデータ型はMech-Visionデータ型に変換されることに対応します。 |
string |
String |
このステップが他のステップにデータを出力するときのみ、Halconデータ型はMech-Visionデータ型に変換されることに対応します。 |
用途例
例1:HDevメインプログラムを呼び出し、メインプログラムには外部関数がない場合
使用されるHalconプログラムは以下の通りです。
read_image (Image, 'fabrik')
regiongrowing (Image, Regions, 1, 1, 3, 200)
area_center (Regions, Area, Row, Column)
上記のプログラムをHalconソフトウェアに保存したら、Mech-Visionで保存したプログラムを呼び出すことができます。操作手順は以下の通りです。
-
メインプログラムのパスを設定します。hDevプログラムのパスパラメータでメインプログラムのパスを設定します。
-
出力ポートを設定します。Halcon変数型に応じて、出力ポート名を設定します。
-
出力変数名を設定します。Halconの変数名に応じて、出力制御変数名と出力画像変数名を設定します。
上記の設定が完了すると、ステップパラメータは下図のようになります。
対応するMech-Visionプロジェクトを下図に示します。各出力ポートのデータフローをダブルクリックして、出力結果を確認できます。
例2:HDevメインプログラムを呼び出し、メインプログラムにはいくつかの外部関数がある場合
使用されるHalconプログラムは以下の通りです。
* atoms.hdev: Locates irregularities in an atomic grid structure
*
dev_close_window ()
dev_update_window ('off')
* ****
* Acquire image
* ****
read_image (Image, 'atoms')
get_image_size (Image, Width, Height)
crop_rectangle1 (Image, Image, Height / 2, 0, Height - 1, Width - 1)
get_image_size (Image, Width, Height)
*dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowID)
*set_display_font (WindowID, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (2)
dev_display (Image)
*disp_message (WindowID, 'Original image', 'window', 12, 12, 'black', 'true')
*disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* Segment image
* ****
* -> Using watershed
gauss_filter (Image, ImageGauss, 5)
watersheds (ImageGauss, Basins, Watersheds)
dev_display (Image)
dev_set_colored (12)
dev_display (Watersheds)
*disp_message (WindowID, 'Watersheds', 'window', 12, 12, 'black', 'true')
*disp_continue_message (WindowID, 'black', 'true')
stop ()
* ****
* Process regions
* ****
* -> Skip regions at the border of the image
smallest_rectangle1 (Basins, Row1, Column1, Row2, Column2)
select_shape (Basins, SelectedRegions1, 'column1', 'and', 2, Width - 1)
select_shape (SelectedRegions1, SelectedRegions2, 'row1', 'and', 2, Height - 1)
select_shape (SelectedRegions2, SelectedRegions3, 'column2', 'and', 1, Width - 3)
select_shape (SelectedRegions3, Inner, 'row2', 'and', 1, Height - 3)
* -> Select irregularly shaped atoms
select_shape (Inner, Irregular, ['moments_i1','moments_i1'], 'or', [0,9.5e8], [1.5e8,1e10])
dev_display (Image)
dev_set_line_width (1)
dev_set_color ('white')
dev_display (Inner)
dev_set_line_width (3)
dev_set_color ('red')
dev_display (Irregular)
*disp_message (WindowID, 'Defects', 'window', 12, 12, 'black', 'true')
上記のプログラムをHalconソフトウェアに保存したら、Mech-Visionで保存したプログラムを呼び出すことができます。操作手順は以下の通りです。
-
メインプログラムのパスを設定します。hDevプログラムのパス パラメータでメインプログラムのパスを設定します。
-
外部関数のフォルダパスを設定します。外部プロシージャフォルダ パラメータで外部関数のフォルダパスを設定します。
-
出力ポートを設定します。Halcon変数型に応じて、出力ポート名 を設定します。
-
出力変数名を設定します。Halconの変数名に応じて、出力制御変数名 と 出力画像変数名 を設定します。
上記の設定が完了すると、ステップパラメータは下図のようになります。
対応するMech-Visionプロジェクトを下図に示します。各出力ポートのデータフローをダブルクリックして、出力結果を確認できます。
例3:外部関数を1つだけ呼び出す場合
使用されるHalconプログラムは以下の通りです。
gauss_filter(Image, Image_Gauss, Kernel_Size)
regiongrowing (Image_Gauss, Regions, 1, 1, 3, 200)
area_center (Regions, Area, Row, Column)
return ()
上記のプログラムをHalconソフトウェアに保存したら、Mech-Visionで保存したプログラムを呼び出すことができます。操作手順は以下の通りです。
-
外部関数のフォルダパスを設定します。外部プロシージャフォルダ パラメータで外部関数のフォルダパスを設定します。
-
外部関数名を設定します。プロシージャ名 パラメータのドロップダウンリストから外部関数名を選択します。
-
入力ポートを設定します。外部関数のパラメータリストに応じて、入力ポート名 を設定します。
-
入力変数名を設定します。Halconの変数名に応じて、入力制御変数名 と 入力画像変数名 を設定します。
-
出力ポートを設定します。Halcon変数型に応じて、出力ポート名 を設定します。
-
出力変数名を設定します。Halconの変数名に応じて、出力制御変数名 と 出力画像変数名 を設定します。
上記の設定が完了すると、ステップパラメータは下図のようになります。
対応するMech-Visionプロジェクトを下図に示します。各出力ポートのデータフローをダブルクリックして、出力結果を確認できます。