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文件,参数可设置输入和输出参数

  • 10
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值