使用HDev计算结果

功能描述

该步骤可运行一个预定义的 Halcon 视觉程序,并将计算结果输出到 Mech-Vision。

使用场景

需要调用 Halcon 中的某些算法时,可使用该步骤。

输入与输出

  • 输入:输入端口名参数中填入的数据类型决定。

  • 输出:输出端口名参数中填入的数据类型决定。

参数说明

程序设置

“程序设置”参数如下图所示。

evaluate results by hdevengine parameter 1
hDev 程序路径

参数解释:该参数用于设置 HDev 程序的路径,即 Halcon 中主程序的路径。

外部 Procedure 文件夹

参数解释:该参数用于设置 Halcon 中外部函数所在的文件夹路径(可包含多个路径,用分号“;”分隔)。

Procedure 名称

参数解释:该参数用于设置外部函数的名称,可在参数下拉列表中进行选择。

调试设置

“调试设置”参数如下图所示。

evaluate results by hdevengine parameter 2
开启在线调试

参数解释:勾选该参数后,可启动调试服务器。用户可以在 Halcon 软件中实时查看由Mech-Vision传入的数据并调试程序。

默认值:不勾选。

调节说明:勾选开启在线调试参数后,需在 Halcon 软件菜单栏中依次选择执行  附加到进程,然后在弹出的窗口中单击确定,用于在 Halcon 中开启调试服务器。如未在 Halcon 软件中开启调试服务器,运行Mech-Vision时将出现卡顿。

调节建议:根据实际需求选择是否开启该功能。

输入设置

“输入设置”参数如下图所示。

evaluate results by hdevengine parameter 3

配置Procedure 名称后,才可进行输入设置,否则不显示“输入设置”相关参数。

输入端口名

参数解释:该参数用于设置步骤的输入端口数据类型。

输入控制变量名

参数解释:该参数用于设置输入控制变量参数的名称列表。

输入图像变量名

参数解释:该参数用于设置输入图像变量参数的名称列表。

输出设置

“输出设置”参数如下图所示。

evaluate results by hdevengine parameter 4
输出端口名

参数解释:该参数用于设置步骤的输出端口数据类型。

输出控制变量名

参数解释:该参数用于设置输出控制变量参数的名称列表。

输出图像变量名

参数解释:该参数用于设置输出图像变量参数的名称列表。

使用说明

使用前提

如需使用“使用HDev计算结果”步骤,需满足如下两个前提,否则在步骤库中无法找到该步骤。

  1. 电脑上安装带有许可证的 Halcon 软件。

  2. 将 Halcon 软件安装目录\bin\x64-win64目录下的 dll 文件(如下图所示)拷贝至 Mech-Vision 安装目录下。如已打开 Mech-Vision,需重启 Mech-Vision 后才可生效。

    evaluate results by hdevengine dll file

支持调用 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 数据类型。

注意事项

使用“使用Hdev计算结果”步骤运行 Halcon 程序时的注意事项如下。

  • 当仅执行主程序时,无需进行输入设置

  • 不支持同时运行主程序和外部函数。

  • 如需调试或修改 Halcon 程序,请勾选运行标志参数组中的“重新加载所需文件”选项,即可在每次运行工程时重新加载 Halcon 程序。如未勾选“重新加载所需文件”选项,则运行工程时会加载修改前的程序。

使用案例

案例 1:调用一个 HDev 主程序,且主程序中没有外部函数

本案例所使用的 Halcon 程序如下。

read_image (Image, 'fabrik')

regiongrowing (Image, Regions, 1, 1, 3, 200)

area_center (Regions, Area, Row, Column)

在 Halcon 软件中将如上程序保存后,即可在 Mech-Vision 中调用该程序。操作步骤如下。

  1. 设置主程序路径。在“使用Hdev计算结果”步骤的hDev程序路径参数处设置主程序路径。

  2. 设置输出端口。根据 Halcon 的变量类型,设置输出端口名参数。

  3. 设置输出变量名。根据 Halcon 中相应的变量名称,设置输出控制变量名输出图像变量名

上述操作完成后,步骤参数如下图所示。

evaluate results by hdevengine example main paramter

对应的Mech-Vision工程如下图所示,可通过双击各输出端口对应的数据流来查看输出结果。

evaluate results by hdevengine example main

案例 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 中调用该程序。操作步骤如下。

  1. 设置主程序路径。在“使用Hdev计算结果”步骤的hDev程序路径参数处设置主程序路径。

  2. 设置外部函数文件夹路径。在外部Procedure参数处设置外部函数文件夹路径。

  3. 设置输出端口。根据 Halcon 的变量类型,设置输出端口名参数。

  4. 设置输出变量名。根据 Halcon 中相应的变量名称,设置输出控制变量名输出图像变量名

上述操作完成后,步骤参数如下图所示。

evaluate results by hdevengine example procedure paremter

对应的Mech-Vision工程如下图所示,可通过双击各输出端口对应的数据流来查看输出结果。

evaluate results by hdevengine example procedure

案例 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 中调用该程序。操作步骤如下。

  1. 设置外部函数文件夹路径。在“使用Hdev计算结果”步骤的外部Procedure参数处设置外部函数文件夹路径。

  2. 设置外部函数名称。在Procedure 名称参数的下拉列表中选择外部函数名称。

  3. 设置输入端口。根据外部函数参数列表,设置输入端口名

  4. 设置输入变量名。根据 Halcon 中相应的变量名称,设置输入控制变量名输入图像变量名

  5. 设置输出端口。根据 Halcon 的变量类型,设置输出端口名参数。

  6. 设置输出变量名。根据 Halcon 中相应的变量名称,设置输出控制变量名输出图像变量名

上述操作完成后,步骤参数如下图所示。

evaluate results by hdevengine example procedure name paramter

对应的Mech-Vision工程如下图所示,可通过双击各输出端口对应的数据流来查看输出结果。

evaluate results by hdevengine example procedure name

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。