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

news2024/11/16 13:38:17

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文库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1063618.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开发工具箱 —— it-tools

文章目录 开发工具箱 —— it-tools安装访问效果 开发工具箱 —— it-tools 安装 docker 安装教程&#xff1a;在 CentOs7 中安装宝塔面板和 Docker&#xff08;包括MySQL&#xff0c;Redis&#xff09; docker 安装命令 docker run -d --name it-tools --restart unless-st…

[unity]保存文件的路径设置

序 比如&#xff0c;序列化了一个数组&#xff0c;保存到磁盘上。 原来的路径是"D://test.bin"&#xff0c;能跑&#xff0c;但是有点问题&#xff1a;序列化出来的文件和原项目离的太远&#xff0c;不好管理。 要是能保存到unity工程的文件夹里就好了。这个路径该…

c#设计模式-行为型模式 之 责任链模式

&#x1f680;简介 又名职责链模式&#xff0c;为了避免请求发送者与多个请求处理者耦合在一起&#xff0c;将所有请求的处理者通过前一对 象记住其下一个对象的引用而连成一条链&#xff1b;当有请求发生时&#xff0c;可将请求沿着这条链传递&#xff0c;直到有对象处理它为…

学员自述:上位机编程培训经历

、大家好&#xff0c;我是华山编程培训中心的学员 之前是从事PLC编程工作的&#xff0c;在C#语言这一块是零基础&#xff0c;之前也尝试过自学&#xff0c;但对于类啊继承啊堆栈这些基本的概念始终是无法理解&#xff0c;直到看到华山培训的视频&#xff0c;并参与朱老师的直播…

番外--命令操作

------------- task00: 00&#xff1a;常用文件目录类命令1-18.&#xff08;pwd&#xff1b; cd&#xff1b;ls&#xff1b; more&#xff1b;less&#xff1b;head&#xff1b;tail&#xff1b; mkdir&#xff1b;rmdir&#xff1b;cp&#xff1b;mv&#xff1b;rm&#xff1b…

pandas 笔记:asfreq

1 方法介绍 asfreq 是一个在 Pandas 时间序列数据分析中常用的方法。这个方法主要用于改变时间序列的频率。asfreq 可以帮助我们将一个时间序列从一个频率转换为另一个频率 2 基本用法 DataFrame.asfreq(freq, methodNone, howNone, normalizeFalse, fill_valueNone)3 参数说…

实验室超声波(提取)萃取技术有哪些实际的应用?

梵英超声(fanyingsonic)实验室超声波清洗机 超声波具有“空化现象”&#xff0c;“机械振动”以及“热效应”等特性。“空化现象”可产生瞬间几千个压力&#xff0c;使提取介质的微小气泡压缩、爆裂、破碎被提取原料和细胞壁&#xff0c;加速天然药用成分的溶出&#xff0c;“机…

微服务技术栈-Docker应用部署

文章目录 前言一、数据卷二、Docker 应用部署1、MySQL部署2、Tomcat部署3、Nginx部署4、Redis部署5、Kafka部署 总结 前言 之前文章讲到过&#xff0c;docker运行程序的过程就是去仓库把镜像拉到本地&#xff0c;然后用一条命令把镜像运行起来变成容器&#xff0c;接下来我们将…

虫情测报灯——一种农业虫情防治工具

KH-CQPest虫情测报灯是一种农业虫情防治工具&#xff0c;它可以通过光源或药物诱虫的方式&#xff0c;吸引害虫撞击撞击屏&#xff0c;通过远红外自动处理技术&#xff0c;无公害杀死害虫的同时保存害虫标本&#xff0c;利用高像素的摄像头拍照、农业四情测报平台识别害虫&…

简单两步实现离线部署ChatGPT,ChatGPT平替版,无需GPU离线搭建ChatGPT

文末附主程序安装包和大模型参数文件~ 演示效果如下图所示&#xff1a; 一、使用方法 软件主要分为两个部分&#xff1a;GPT4ALL软件主体&#xff08;主程序&#xff09;模型参数&#xff08;离线模型&#xff09;&#xff0c;如果使用API Key的话则不需要下载模型参数。 可以…

家居家纺经营配送小程序商城的作用是什么

家居家纺产品是每个家庭都必备的&#xff0c;无论商场还是小摊贩&#xff0c;市场中经营商家数量都比较多&#xff0c;而随着互联网电商发展&#xff0c;在实际经营中&#xff0c;传统线下商家也面临多个难题&#xff1a; 首先就是获客问题&#xff0c;线下渠道推广宣传方式单…

深刻解析数据库技术的要点以及应对策略 (软件设计师笔记)

&#x1f600;前言 在信息化的时代背景下&#xff0c;数据已经成为了推动各行各业发展的核心要素之一。数据的储存、管理、维护、和获取变得尤为关键&#xff0c;确保信息的高效流通和决策的科学性。数据库技术&#xff0c;正是在这一背景下发挥着举足轻重的作用&#xff0c;它…

源码上分析Vue2和Vue3的响应式原理

本文节选自我的博客&#xff1a;源码上分析Vue2和Vue3的响应式原理 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是MilesChen&#xff0c;偏前端的全栈开发者。&#x1f4dd; CSDN主页&#xff1a;爱吃糖的猫&#x1f525;&#x1f4e3; 我的博客&#xff1a;爱吃糖…

基于帝国主义竞争优化的BP神经网络(分类应用) - 附代码

基于帝国主义竞争优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码 文章目录 基于帝国主义竞争优化的BP神经网络&#xff08;分类应用&#xff09; - 附代码1.鸢尾花iris数据介绍2.数据集整理3.帝国主义竞争优化BP神经网络3.1 BP神经网络参数设置3.2 帝国主义竞争算…

【BI看板】Superset2.0+图表二次开发初探

Superset图表功能也很丰富了&#xff0c;但一些个性化的定制需求就需要二次开发了。网上二开的superset版本大多是0.xxx版本的或1.5xxx版本&#xff0c;本次用的是2.xxx。 源码相关说明 源码目录 superset-2.0\superset-frontend\plugins\plugin-chart-echarts 插件相关资料 官…

图片批量编辑器,轻松拼接多张图片,创意无限!

你是否曾经遇到这样的问题&#xff1a;需要将多张图片拼接成一张完整的画面&#xff0c;却缺乏专业的图片编辑技能&#xff1f;现在&#xff0c;我们为你带来一款强大的图片批量编辑器——让你轻松实现多张图片拼接&#xff0c;创意无限&#xff01; 这款图片批量编辑器可以帮助…

IP地址划分知识点总结

目录 1.IP数据报头 2.IP地址 3.IP地址分类 4.特殊IP地址 1.IP数据报头 网络之间的互连协议(Internet Protocol&#xff0c;IP)是方便计算机网络系统之间相互通信的协议&#xff0c;是各大厂家遵循的计算机网络相互通信的规则。 IP数据报报头如下图所示&#xff1a; (1)版…

计算机竞赛 题目:基于python的验证码识别 - 机器视觉 验证码识别

文章目录 0 前言1 项目简介2 验证码识别步骤2.1 灰度处理&二值化2.2 去除边框2.3 图像降噪2.4 字符切割2.5 识别 3 基于tensorflow的验证码识别3.1 数据集3.2 基于tf的神经网络训练代码 4 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于pyt…

蓝桥杯---第二讲---二分与前缀和

文章目录 前言Ⅰ. 数的范围0x00 算法思路0x00 代码书写 Ⅱ. 数的三次方根0x00 算法思路0x01代码书写 Ⅲ. 前缀和0x00 算法思路0x01 代码书写 Ⅳ. 子矩阵的和0x00 算法思路0x01 代码书写 Ⅴ. 机器人跳跃问题0x00 算法思路0x01 代码书写 Ⅵ. 四平方和0x00 算法思路0x01 代码书写 …

10.3 C++运算符重载实现的过程,代码

目录 运算符重载背景&#xff08;operator&#xff09; 定义 重载的方法 不能重载的运算符 运算符重载注意事项 代码实现 运行结果 运算符重载背景&#xff08;operator&#xff09; 自定义的类中&#xff0c;系统默认只提供两个运算符供用户使用&#xff0c;分别是赋值…