HALCON的应用通过HDevelop应用来构建原型。HDevelop的开发主要有3种形式。
- Start from Scratch:
手动通过脚本,把HDevelop的代码转化为一般的编程语言。如,上一节提到,其实,每个operators,也许并不一样,需要依据HALCON Operator Reference来确定具体支持哪类编程语言。
- Export HDevelop Code:
通过HDevelop自动进行转化。
- Export Library Project:
通过库+对应的CMake文件的方式来部分编译。
HDevelop:
1 简单的检测PCB板子的例子:
【案】我们看一个例子:
这个是用HALCON来检测电路的例子,调用了HALCON的connection的操作符,直接判断图像中物体的连通性。
【如果,我放大此图】
【案】红色箭头的部分,其实是HALCON软件正确识电路PCB有错误,断开的问题的部分。
HALCON上述实现的代码异常简单,如下:
read_image (Image, 'pcb')
threshold (Image, Region, 0, 122)
connection (Region, ConnectedRegions)
count_obj (ConnectedRegions, Number)
2 HDevelop项目整合的方法:
2.1 将算法输出为一个Procedure:【在HDevelop中设定】
右键创建一个处理模块:
选择【First In, Last Out】
保存项目
2.2 以VS2019为例配置HALCON项目设定:【在VS2019设定】
【创建一个HALCON的VS项目,项目名:vs_count_regions_HALCON】
【注意,设定为X64】
【设定VC++】的包含目录
$(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp;
设定Linker的Lib目录:
$(HALCONROOT)\lib\$(HALCONARCH);
设定附加依赖库:
halconcpp.lib;hdevenginecpp.lib;
2.3 将刚才生成的HALCON项目并入VS2019【HDevelop】
【选择导出】
会生成如下文件:
2.4 将刚才生成的HALCON文件加入:vs_count_regions_HALCON VS2019项目
在VS2019中,在项目中添加文件:vs_count_regions.cpp
并在该文件中,输入如下代码:
#include <iostream>
#include "HalconCpp.h"
#include "hdev_count_regions/source/hdev_count_regions.h"
int main()
{
HalconCpp::HImage Image("pcb");
hdev_count_regions::SetResourcePath("hdev_count_regions/res_hdev_count_regions");
HalconCpp::HTuple Number{};
hdev_count_regions::count_regions(Image, &Number);
std::cout << "Number of Regions: " << Number.L() << '\n';
}
然后,把刚才HALCON的生产文件加入的VS2019如下,
2.4 在VS2019中运行HALCON的小项目库【HDevelop】
在VS 2019中,加入并打开文件vs_count_regions.cpp:生成方案
然后,运行此方案,
【小结】
这样,通过VS2019成功调用了HALCON的一个判别连接的应用。
参考:
HALCONQuickGuide版本23.05资源-CSDN文库