Halcon 从基础到精通-02- 开发基于HALCON的应用

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 从基础到精通-02- 开发基于HALCON的应用_第1张图片

【如果,我放大此图】

【案】红色箭头的部分,其实是HALCON软件正确识电路PCB有错误,断开的问题的部分。

Halcon 从基础到精通-02- 开发基于HALCON的应用_第2张图片

HALCON上述实现的代码异常简单,如下: 

read_image (Image, 'pcb')
threshold (Image, Region, 0, 122)
connection (Region, ConnectedRegions)
count_obj (ConnectedRegions, Number)

2 HDevelop项目整合的方法:

2.1 将算法输出为一个Procedure:【在HDevelop中设定】

右键创建一个处理模块:

Halcon 从基础到精通-02- 开发基于HALCON的应用_第3张图片

 选择【First In, Last Out】

Halcon 从基础到精通-02- 开发基于HALCON的应用_第4张图片

 保存项目

2.2 以VS2019为例配置HALCON项目设定:【在VS2019设定】

Halcon 从基础到精通-02- 开发基于HALCON的应用_第5张图片

【创建一个HALCON的VS项目,项目名:vs_count_regions_HALCON】 

Halcon 从基础到精通-02- 开发基于HALCON的应用_第6张图片

【注意,设定为X64】 

Halcon 从基础到精通-02- 开发基于HALCON的应用_第7张图片

【设定VC++】的包含目录

 $(HALCONROOT)\include;$(HALCONROOT)\include\halconcpp;

Halcon 从基础到精通-02- 开发基于HALCON的应用_第8张图片

设定Linker的Lib目录: 

$(HALCONROOT)\lib\$(HALCONARCH);

Halcon 从基础到精通-02- 开发基于HALCON的应用_第9张图片

设定附加依赖库:

 halconcpp.lib;hdevenginecpp.lib;

Halcon 从基础到精通-02- 开发基于HALCON的应用_第10张图片

2.3  将刚才生成的HALCON项目并入VS2019【HDevelop】

Halcon 从基础到精通-02- 开发基于HALCON的应用_第11张图片

【选择导出】

Halcon 从基础到精通-02- 开发基于HALCON的应用_第12张图片

会生成如下文件:

Halcon 从基础到精通-02- 开发基于HALCON的应用_第13张图片

Halcon 从基础到精通-02- 开发基于HALCON的应用_第14张图片

2.4  将刚才生成的HALCON文件加入:vs_count_regions_HALCON VS2019项目

 在VS2019中,在项目中添加文件:vs_count_regions.cpp

Halcon 从基础到精通-02- 开发基于HALCON的应用_第15张图片

 并在该文件中,输入如下代码:

#include 
#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如下,

Halcon 从基础到精通-02- 开发基于HALCON的应用_第16张图片

2.4  在VS2019中运行HALCON的小项目库【HDevelop】

在VS 2019中,加入并打开文件vs_count_regions.cpp:生成方案

Halcon 从基础到精通-02- 开发基于HALCON的应用_第17张图片

然后,运行此方案,

Halcon 从基础到精通-02- 开发基于HALCON的应用_第18张图片

【小结】

这样,通过VS2019成功调用了HALCON的一个判别连接的应用。


参考:

HALCONQuickGuide版本23.05资源-CSDN文库

你可能感兴趣的:(HALCON,3D机器视觉,机器视觉,c++,开发语言)