使用HDev计算结果
参数说明
程序设置
“程序设置”参数如下图所示。
- hDev 程序路径
-
参数解释:该参数用于设置 HDev 程序的路径,即 Halcon 中主程序的路径。
- 外部 Procedure 文件夹
-
参数解释:该参数用于设置 Halcon 中外部函数所在的文件夹路径(可包含多个路径,用分号“;”分隔)。
- Procedure 名称
-
参数解释:该参数用于设置外部函数的名称,可在参数下拉列表中进行选择。
调试设置
“调试设置”参数如下图所示。
- 开启在线调试
-
参数解释:勾选该参数后,可启动调试服务器。用户可以在 Halcon 软件中实时查看由Mech-Vision传入的数据并调试程序。
默认值:不勾选。
调节说明:勾选开启在线调试参数后,需在 Halcon 软件菜单栏中依次选择
,然后在弹出的窗口中单击确定,用于在 Halcon 中开启调试服务器。如未在 Halcon 软件中开启调试服务器,运行Mech-Vision时将出现卡顿。调节建议:根据实际需求选择是否开启该功能。
输入设置
“输入设置”参数如下图所示。
配置Procedure 名称后,才可进行输入设置,否则不显示“输入设置”相关参数。 |
- 输入端口名
-
参数解释:该参数用于设置步骤的输入端口数据类型。
- 输入控制变量名
-
参数解释:该参数用于设置输入控制变量参数的名称列表。
- 输入图像变量名
-
参数解释:该参数用于设置输入图像变量参数的名称列表。
输出设置
“输出设置”参数如下图所示。
- 输出端口名
-
参数解释:该参数用于设置步骤的输出端口数据类型。
- 输出控制变量名
-
参数解释:该参数用于设置输出控制变量参数的名称列表。
- 输出图像变量名
-
参数解释:该参数用于设置输出图像变量参数的名称列表。
使用说明
使用前提
如需使用“使用HDev计算结果”步骤,需满足如下两个前提,否则在步骤库中无法找到该步骤。
-
电脑上安装带有许可证的 Halcon 软件。
-
将 Halcon 软件
安装目录\bin\x64-win64
目录下的 dll 文件(如下图所示)拷贝至 Mech-Vision 安装目录下。如已打开 Mech-Vision,需重启 Mech-Vision 后才可生效。
支持调用 Halcon 程序的方式
-
在 Mech-Vision 中调用一个 HDev 主程序,且主程序中没有外部函数。
-
在 Mech-Vision 中调用一个 HDev 主程序,且主程序中有若干外部函数。
-
在 Mech-Vision 中只调用一个外部函数。
已支持的 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计算结果”步骤的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计算结果”步骤的hDev程序路径参数处设置主程序路径。
-
设置外部函数文件夹路径。在外部Procedure参数处设置外部函数文件夹路径。
-
设置输出端口。根据 Halcon 的变量类型,设置输出端口名参数。
-
设置输出变量名。根据 Halcon 中相应的变量名称,设置输出控制变量名和输出图像变量名。
上述操作完成后,步骤参数如下图所示。
对应的Mech-Vision工程如下图所示,可通过双击各输出端口对应的数据流来查看输出结果。
案例 3:只调用一个外部函数
本案例所使用的 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 中调用该程序。操作步骤如下。
-
设置外部函数文件夹路径。在“使用Hdev计算结果”步骤的外部Procedure参数处设置外部函数文件夹路径。
-
设置外部函数名称。在Procedure 名称参数的下拉列表中选择外部函数名称。
-
设置输入端口。根据外部函数参数列表,设置输入端口名。
-
设置输入变量名。根据 Halcon 中相应的变量名称,设置输入控制变量名和输入图像变量名。
-
设置输出端口。根据 Halcon 的变量类型,设置输出端口名参数。
-
设置输出变量名。根据 Halcon 中相应的变量名称,设置输出控制变量名和输出图像变量名。
上述操作完成后,步骤参数如下图所示。
对应的Mech-Vision工程如下图所示,可通过双击各输出端口对应的数据流来查看输出结果。