本文最后更新于:2024年5月7日 下午
Halcon 的 Hdevelop 可以快速编写算子开发图像处理算法,本文记录将 Hdevelop 代码导出到 C++ 应用程序的方法。
背景
- 正确安装 Halcon 我的版本是 20.11
- 本文内容自官方教学视频整理扩展而来
- 正确安装、配置例程代码、系统变量
Halcon 导出到 C++
- 在 Halcon 中调试和开发图像处理算法更加便利快捷
- 开发完成的项目可以以工程或代码形式导出,导出后可以直接供 C++ 调用
- 通过工程导出的 Halcon 工程,修改 Halcon 代码重新导出后不需要重新编译 C++ 工程即可重新运行,并带入新的 Halcon 改动
- 通过代码形式导出的 Halcon 工程更加灵活,但需要重新编译
Halcon 工程导出
导出 Halcon 工程
Halcon 代码
- main 函数
1 |
|
- 其中
get_printer_chip_regions
代码
1 |
|
- 运行效果
导出工程
- 文件 -> 导出库工程,选择输入文件,输出语言,输出工程位置
- 导出工程后可以看到
cmake
,source
和原始的 halcon 工程文件*.hdev
Halcon 工程导入 VS C++
首先需要 配置好 Halcon 环境变量
导入配置
- 添加现有项:
- 添加导出的 srouce 文件夹中的文件:
- 编写 VS C++ 调用 Halcon 代码
1 |
|
- 其中
SetResourcePath("test_pro/res_test_pro")
指向导出的 halcon 工程 hdev 文件所在文件夹
运行效果
- 此时编译、运行代码,可以在 Variable Inspect 插件中看到运行效果:
- 表明我们已经成功在 VS 中导入 Halcon 工程
修改 Halcon 工程
通过 Halcon 导出工程 植入 VS 的代码有个好处是修改 Halcon 代码后不需要重新编译 VS C++ 工程即可达到修改的效果
-
如果需要修改 Halcon 代码,我们可以直接去调整导出的 hdev 代码
-
例如我们仅筛选出比较大的区域
-
修改导出 hdev 的函数代码,添加筛选连通域的语句,保存工程
1 |
|
- 之后不需要重新编译,直接重新运行之前的工程即可看到新代码的效果
- 本质上是因为在导出工程的 cpp 源码中直接导入了 hdev 的代码
1 |
|
- 因此才可以不需要重新编译
Halcon 代码导出
-
Halcon 也支持直接导出代码
-
同样的示例,我们在导出时选择导出语言
- 语言选择 C++
-
导出后发现在原始 hdev 文件旁边多了个 cpp 文件,就是我们导出的代码
-
在 Halcon 工程中我们核心的函数就是
get_printer_chip_regions
-
我们在 cpp 文件中找到他
1 |
|
- 将其加入到 C++ 工程中,之前的 C++ 代码变为
1 |
|
- 可以看到同样的代码运行结果
- 表明 Halcon 导出的 C++ 代码植入成功
- 这种使用形式如果修改代码需要重新编译
参考资料
- https://www.mvtec.com/cn/downloads/halcon
- https://www.mvtec.com/cn/company/news/article/hdevelop-library-project-export
- https://blog.csdn.net/chaipp0607/article/details/69514982
- https://blog.csdn.net/u012210613/article/details/88653443
文章链接:
https://www.zywvvd.com/notes/coding/halcon/halcon-cpp-insert/halcon-cpp/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付
Halcon HDEVELOP 工程导出集成到 C++ 应用程序
https://www.zywvvd.com/notes/coding/halcon/halcon-cpp-insert/halcon-cpp/