halcon引擎的使用

c#的halcon引擎调用 在控件里面把halcondotnet.dll添加进来,在窗体中添加hWindowControl1,和两个button按钮,(加载程序和运行程序)MessageBox.Show("加载成功");拷贝到当前vs工程目录文件下,并且把库添加引用进来。新建VS工程,选择c#的winform窗体。需要添加的Halcon的库。 阅读详情
使用halcon引擎的优点:

1、C++代码与HALCON图像处理分离,不需要将HALCON图像处理部分导出成C++代码,否则每一次修改HALCON 时,C++相应部分就需要跟着更改,便捷性不足。

2、脚本方式执行算法可降低内存泄漏。

下面介绍使用HALCON引擎执行脚本基础部分:使用的是VS2017和HALCON20.11学习版。

在项目中添加下面两个库文件:

主要用得到的类:

HDevEngine类是管理全局设置。如设置或获取全局变量的值、设置脚本路径、启动停止调试模式等。

HDevProgram类加载.hdev格式文件以及获取文件内部参数一般信息。

HDevProgramCall类执行.hdev文件格式脚本,并获取变量的值。

HDevProcedure类加载.hdvp格式外部函数以及内部函数。

HDevProcedureCall类执行.hdvp外部函数和内部函数。并且可以设置或获取外部函数、内部函数参数。

HDevOpMultiWindowImpl类主要是与显示结果相关,在脚本中执行的结果可以显示在C#中。

HDevEngineException类是引擎相关的异常类。

基本使用方式:

方式一:执行.hdev格式。无任何封装函数,该种方式重用性差,无法设置参数。

方式二:路径+.hdvp格式。该方式比较推荐使用,可设置输入参数,获取输出参数,重用性好。

方式三:调用.hdev中的封装函数(外部函数、内部函数)。该方式优点在于方便在HALCON中读图调试。

本系列所有关于C++和halcon的例子都采用 方式三 调用。

QT调用halcon封装函数的流程代码:
QString appPath = QApplication::applicationDirPath();
        QString algPath = appPath + "/HalconAlg";
        HEngine.SetProcedurePath(algPath.toStdString().c_str()); //设置算法程序所在的文件夹路径
        QDir dir(algPath);
        QStringList filters;
        filters << "*.hdvp";
        QFileInfoList fileList = dir.entryInfoList(filters, QDir::Files | QDir::Readable, QDir::Name);
        try
        {
            for each (auto var in fileList) // fileList存储的是所有,.hdvp函数的文件命
            {
                QString algName = var.baseName();
                HDevProcedure procedure;
                procedure.LoadProcedure(algName.toStdString().data()); // 加载算法
                HDevProcedureCall procedureCall = HDevProcedureCall(procedure); 
                m_algProcedureMap.insert(algName, procedureCall);
            }
        }
        catch (HException &HDevExpDefaultException)
        {
            QString strError;
            HTuple hv_Exception;
            HDevExpDefaultException.ToHTuple(&hv_Exception);
            strError = hv_Exception.ToString();
            QMessageBox::warning(NULL, "warning", "算法加载失败!");
            LOG(ERROR) << strError;
        }

开发 halcon 的 .hdev中的封装函数(此处只展示外部函数)步骤:

点击函数创建函数,进入如下窗口,先择.hdvp文件,参数可设置输入和输出参数

halcon引擎学习 1.添加引用 添加 halcondotnet 和 hdevenginedotnet 2.调用主函数(完整的halcon程序) public partial class Form1 : Form { HDevOpFixedWindowImpl MyHDevOperatorImpl; //private HDevOpMultiWindowImpl MyHDevOperatorImpl; private HWindow Window; string ProgramPathString; private HDevE 阅读详情

相关推荐

C#与Halcon联合编程之利用Halcon引擎调用函数

C#与Halcon联合编程之利用Halcon引擎调用函数 第一种,调用后缀为.hdev的Halcon文件 我们通常创建的Halcon文件其后缀就是.hdev,也就是在Halcon程序编辑器main标签页下所写的程序即Halcon的主程序。在C#中利用Halcon引擎调用主程序,可以不用将其导出。 准备工作: 添加引用: 将Halcon文件放入项目文件夹的Debug目录下。 准备工作完成后,就进行窗体的搭建和程序的编写。下面以一个小的程序示例来展示调用方法: 示例: 界面搭建: .

Kevin_Sun777的博客 5395

C# 联合HALCON编程 之 HALCON引擎在C#内的调用(入门级!!!)

其中输出“GrayImage”是没有作用的,或许说对于后面的是不需要的,选择该变量,右侧移除。对封装函数进行命名,可以选择是否需要对函数设置密码:设置密码后,HDevelop内查看该函数需要输入密码,导出后,该函数为加密状态,其他软件打开导出文件为乱码(不会影响到C#内部的解析执行)如果一个C#工程里面需要调用两个及以上的HALCON引擎,需要对引擎文件的路径指定,不然多个引擎同时调用是,引擎路径会继承最近一次调用的引擎路径。2.3通常,后面的“一般文档”和“文档参数”无需设置,特殊情况再做说明。

mooney1997的博客 8777

Halcon引擎调用一一C#调用Halcon外部函数

1.首先先引用这两样东西,它在Halcon安装目录下。例如:E:\Halcon12\bin\dotnet35 using HalconDotNet; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.T

the_future_way的博客 2332

Qt + OpenCV + Halcon + QScintilla 实现Halcon的脚本引擎功能 (源码)

在工业领域,如”缺陷检测“、”目标计数“等的应用,可实现软件的标准化;软件输入和输出采用Qt + opencv为框架;过程则采用opencv转halcon的脚本算子;包括编译的颜色显示、关键字提示等等功能。

dede28的博客 1656

c# draw halcon_C#中调用halcon引擎来执行hdev程序

调用halcon引擎有两个直接的好处:避免C# 与halcon代码混编时可能产生的内存泄露问题修改halcon程序时不用重新编译C#勇哥写了一个示例,详细的应用感受和缺点限制勇哥会持续做相关的总结给大家分享。对于halcon17来说,要运行下面的程序,你要引用halcondotnet.dllhdevenginedonet.dllusingHalconDotNet;usingSystem;usi...

weixin_39575937的博客 670

【halcon】无开发环境,部署halcon程序(含脚本引擎)

在脱离Halcon开发环境如何部署halcon程序呢?一般情况下,把 halcon.dll 和 exe 放到 同一个目录下。但是如果你的程序用到的halcon脚本引擎,仅仅这样,程序还是无法运行。runtime.exe到底干了啥?明白之后,你就可以通过自己写程序部署halcon环境了~~

songhuangong123的博客 1414

HALCON 引擎学习一

HALCON与C#结合处理图象时,通常情况是将HALCON图像处理部分导出C#代码,然后执行。而HALCON提供了一种脚本执行算法的方式,该方式的优点是:1、不需要将HALCON图像处理部分导出成C#代码,否则每一次修改HALCON 时,C#相应部分就需要跟着更改,便捷性不足。2、脚本方式执行算法可降低内存泄漏。 ...

weixin_42109102的博客 4418

【halcon】halcon 函数文件 以及 脚本引擎如何调用外部函数文件 上篇

说多了容易混淆,今天就说,我觉得最有用的:外部函数文件(.hdvp)

songhuangong123的博客 1563

C#调用Halcon引擎

CSharp与halcon联合编程CSharp与halcon联合编程CSharp与halcon联合编程

Major_S的博客 1万+

【Halcon引擎 C++】为引擎实现窗口显示 QT界面

使用Halcon引擎的时候,需要显示执行过程结果的时候,可以直接调用界面中的窗口进行显示,而不是将结果作为输出对象获取后再显示

Yoto_Jo的博客 920

C#的HALCON引擎调用-传入参数输出结果实现流程

C#的HALCON引擎调用-传入参数输出结果实现流程

Halcon引擎

这个功能是用于在C#那边用halcon引擎执行程序时的交互性调试用的。 下面的主机与端口是指的C#那边的主机与端口。 你必须在C#这边用下面这句 MyEngine.StartDebugServer(); 开启调试服务器。 这个调试服务器默认的地址是:localhost 端口是:57786 勇哥感觉指定网络中另一台机器做为服务器也应该是可以的。 C# private void Form1_Load(object sender, EventArgs e) { va...

weixin_42365213的博客 2321

HALCON引擎学习一例程

HALCON引擎学习一例程

基于C#调用halcon引擎

第一步首先建立个C#工程,根据自己的爱好来,可以是winform或者控制台,我这建立的是winform便于展示。设置函数所需的输入,我的函数需要这几个参数变量,因此我在这里传入了ho_Imagedeep,hv_CameraParam,hv_ObjectModel3D这三个输入,输出是“dimater”//输出也是拿到的数值就是halcon创建函数中的输出名称是dimater的变量。halcon创建的文件中有一个函数名字是image_Proccess的函数,我们通过代码来引用这个halcon函数。

weixin_43997632的博客 718

实战指南 | 快速修复Adobe Acrobat 2020安装过程中的常见注册表错误

本文提供了Adobe Acrobat 2020安装过程中遇到“无法打开键”注册表错误的详细修复指南。通过安全编辑注册表,精准定位并删除残留键值,可快速解决此常见安装报错,确保软件顺利安装。同时,文章也介绍了其他安装问题的应对策略与预防措施。

weixin_29200485的博客 563

避坑指南:RK3576+Android14适配移远5G模组(RG200U)时,我遇到的3个‘巨坑’及解决方案

本文详细记录了RK3576芯片适配Android14系统与移远RG200U 5G模组过程中遇到的三大技术难题:RIL服务启动失败、HIDL兼容性矩阵配置错误及ttyUSB权限冲突。通过实战案例提供了动态库拷贝、HIDL版本链声明和SELinux策略调整等解决方案,帮助开发者高效完成5G模组集成,特别适用于基于kernel6.1的嵌入式开发场景。

weixin_30664051的博客 390

C++调用HALCON引擎

本文档为HALCON编写hdvp后C++调用使用说明,通过该文档可以逐步实现C++调用外部函数,实现功能,避免重复编译,同时支持脚本更改后的同步刷新,不用在重启应用程序。

qq_41100111的博客 2489

GNSS接收机性能测试指标详解:TTFF、位置精度、灵敏度等关键参数如何评估

本文详细解析了GNSS接收机性能测试的关键指标,包括首次定位时间(TTFF)、位置精度、灵敏度等,帮助工程师系统评估接收机性能。通过多频段协同定位和载波相位测试等技术,提升定位精度至亚米级。同时,介绍了灵敏度测试的极限挑战和授时精度的专业测试方案,为GNSS接收机的性能优化提供实用指导。

cuda7parallel的博客 963

C#调用 Halcon引擎执行代码

Halcon引擎可以直接执行halcon代码,把halcon程序当做C#的一个方法来调用,这样可以减轻C#这边的程序负担,而且可以避免内在泄露等bug的出现。还有一种好处是方便调试视觉代码,你只需要启动halcon,直接用修改调试视觉代码即可,C#那边不需要做改变。 这种方式的缺点是定位halcon代码的错误比较麻烦,你不可能在halcon代码那里实时下断点。 详细介绍见勇哥帖子,做个标记,有需要再看! 网址链接: http://www.skcircle.com/?id=1344 ...

JiYuee Note 2823

用AI生成React/Vue页面?实测Locofy等5款工具,教你选最适合的

本文深度评测了2024年五大AI生成前端页面工具,包括Locofy、Builder.io等,从代码质量、可视化编辑器成本到企业级落地方案进行全面分析。通过实测数据和实战案例,揭示如何利用AI生成技术高效创建React/Vue页面,提升开发效率并优化性能。

m5n6o7的博客 606

MPN – 制造商物料编号(延伸)

此外,用户还可以在物料主数据中定义阻止MPN材料的原因,以及在采购订单创建时,是否可以将现有的MPN材料修改为其他MPN材料,从而实现对MPN材料的精细控制和管理。通过使用AMPL,用户可以指定每个MPN材料是否仅能为特定工厂或整个企业所有工厂采购、采购的时间段、是否必须属于特定修订级别、是否只能从特定制造商工厂采购以及是否被阻止及其原因。通过AMPL管理,企业可以规范采购流程,避免使用未经批准的材料,从而提高采购的透明度和效率,同时也为质量控制提供了保障‌。3、QM中的制造商物料。质量信息记录QI01。

yanzibing99的博客 2486

C#中调用halcon引擎来执行hdev程序

调用halcon引擎有两个直接的好处: 避免C# 与halcon代码混编时可能产生的内存泄露问题 修改halcon程序时不用重新编译C# 勇哥写了一个示例,详细的应用感受和缺点限制勇哥会持续做相关的总结给大家分享。 对于halcon17来说,要运行下面的程序,你要引用 C# halcondotnet.dll hdevenginedonet.dll C# using HalconDotNet; using System; using System....

JiYuee Note 4051

ScanNet数据集下载全攻略:从申请到解析的保姆级教程(含常见问题解决)

本文提供了ScanNet数据集从申请授权到下载、解析的完整实战指南。针对这个大规模室内RGB-D数据集,详细介绍了官方申请流程、优化下载策略、数据验证方法,并重点解决了深度图解析等常见问题,帮助三维视觉研究者高效获取和使用这一宝贵资源。

5f4d3s2a1q的博客 620

C++调用Halcon引擎,附加到进程调试

C++调用Halcon引擎,Halcon附加到C++进程调试

C1142256120_qq的博客 3178

uniapp [安卓苹果App端] - 实现判断并开启消息通知/提示权限,监测通知权限未开启时弹框提示用户并引导用户跳转至设置界面,uniApp检查通知权限+提示是否打开+点击跳转设置(详细示例代码)

uni-app判断有无通知权限,并进行设置,设置手机通知权限,开启通知权限,uni-app解决权限问题,uniapp 拉起授权(拒绝后重新开启权限)uniApp打包的手机app如果用户没开启通知权限、引导用户开启,uni-app动态打开应用通知权限,拒绝后跳转设置页面,uniapp获取通知栏权限,苹果ios系统打开通知权限,被拒绝怎么办,uniapp安卓判断通知权限,uniapp打包的APP引导用户打开手机通知权限,uniapp权限被拒绝,跳转手机设置页面 权限设置,IOS应用内跳转系统设置,uni-app

🏆 前端领域优质创作者 1万+

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

【深度学习|多实例学习】多实例学习(Multiple Instance Learning, MIL)的起源、发展和应用,附代码(一)

2401_89898861的博客 1923
下一篇: 大恒相机SDK的使用
嘿嘿哈!
博客等级 码龄6年 27粉丝 6原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值