C++ 调用Halcon引擎,脚本调试代码

一,背景:C++调用halcon最常见的方式便是转C++代码,然后封装成函数或者类库。另外一种方式是调用Halcon脚本,不需要转换成C++代码,Debug的时候,可以直接跳入halcon脚本,单步查看每一行算法执行情况,非常方便,缺点是效率没有C++的方式高。
二、实现步骤
2.1 先在halcon编辑界面封装一个.hdvp格式的脚本函数,然后利用halcon引擎,在C++中调用即可。
2.2 脚本编辑具体实施步骤如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.2 C++调用脚本步骤

#pragma once
#pragma execution_character_set("utf-8")

#include <iostream>
#include <vector>
#include <stdio.h>
#include <iomanip>
#include <sstream>
#include <fstream>
#include <thread>
#include <string>
#include <mutex>
#include <io.h>
#include <direct.h>
#include <Halcon.h>
#include <HalconCpp.h>
#include <HDevEngineCpp.h>

using namespace std;
using namespace HalconCpp;
using namespace HDevEngineCpp;
class HalconJiaoBen
{
public:
	HalconJiaoBen();
	~HalconJiaoBen();
	int TestFunc(string Path, string name);
private:
	HDevEngine *gMyEngine; //Halcon引擎
	HDevProcedure gProgram; //创建程序
	HDevProcedureCall gProcedureCall; //调用程序
};
#include "HalconJiaoBen.h"
HalconJiaoBen::HalconJiaoBen()
{
	gMyEngine = new HDevEngine();
}
HalconJiaoBen::~HalconJiaoBen()
{
	delete gMyEngine;
}
int HalconJiaoBen::TestFunc(string Path, string name)
{
	//设置引擎(devp文件夹路径)
	gMyEngine->SetProcedurePath(Path.c_str()); //devp文件夹路径
	//设置程序和回调函数
	gProgram.LoadProcedure(name.c_str());//devp文件名称
	gProcedureCall = HDevProcedureCall(gProgram);
	//启动调试服务
	gMyEngine->StartDebugServer(); 
	//★等待debug连接,程序会在Execute步骤等待,直至Halcon附加到进程
	gProcedureCall.SetWaitForDebugConnection(true); 
	//设置输入参数
	HObject img;
	ReadImage(&img, "E:/test.bmp");
	gProcedureCall.SetInputIconicParamObject("hImage", img);
	gProcedureCall.SetInputCtrlParamTuple("low", 200); //设置输入参数
	gProcedureCall.SetInputCtrlParamTuple("height", 255); //设置输入参数
	//执行程序
	gProcedureCall.Execute(); 
	//获取结果
	HTuple retX,retY, retData;
	retX = gProcedureCall.GetOutputCtrlParamTuple("retX"); //获取输出参数
	retY = gProcedureCall.GetOutputCtrlParamTuple("retY"); //获取输出参数
	retData = gProcedureCall.GetOutputCtrlParamTuple("retData"); //获取输出参数
	
	//停止调试服务
	gMyEngine->StopDebugServer(); 

	return 0;
}
	//Halcon脚本引擎测试
	halconJiaoBen = new HalconJiaoBen();
	halconJiaoBen->TestFunc(QCoreApplication::applicationDirPath().toStdString() + "/JiaoBen", "HalconJiao");

2.3 需要注意gMyEngine->SetProcedurePath(Path.c_str());设置的是脚本所在文件夹路径,不是文件路径。
gProgram.LoadProcedure(name.c_str());设置的是脚本文件的名称,而不是路径加名称。
2.4配置include路径:
…\HalconSDK\include
…\HalconSDK\include\halconcpp
…\HalconSDK\include\hdevengine
链接器:
halconcpp.lib
hdevenginecpp.lib
依赖库:
hdevenginecpp.dll
三、测试
3.1 测试的时候可以直接运行C++代码。然后打开脚本文件,在运行工具栏下面,选择附加到进程,C++代码设置断点进行调试,就可以跳入到halcon脚本执行了。
在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

仓库的数据管理如何做?

在当今这个数字化飞速发展的时代&#xff0c;仓库作为供应链的核心环节&#xff0c;其数据管理的重要性日益凸显。一个高效、精准的仓库数据管理体系&#xff0c;不仅能够显著提升物流效率&#xff0c;降低运营成本&#xff0c;还能增强企业的市场竞争力。那么&#xff0c;仓库…

使用八股搭建神经网络

神经网络搭建八股 使用tf.keras 六步法搭建模型 1.import 2.train, test 指定输入特征/标签 3.model tf.keras.model.Sequential 在Squential,搭建神经网络 4.model.compile 配置训练方法&#xff0c;选择哪种优化器、损失函数、评测指标 5.model.fit 执行训练过程&a…

高压线束屏蔽效能测试之管中管法、线注入法

一、引言 上期推文介绍了高压线束屏蔽效能测试方法三同轴法&#xff0c;本篇文章将继续介绍高压线束相关测试方法——管中管法和线注入法。 二、管中管法 1、一般要求 管中管法参照IEC62153-4-7标准对高低压连接器进行零部件级屏蔽效能测试。在测试时&#xff0c;通过金属延长管…

安卓腾讯桌球多功能助手直装版

安卓13自测效果&#xff0c;安卓12-安卓12以下一定可以的&#xff0c;QQ登陆的话扫码登陆&#xff0c;两个手机&#xff0c;一个扫码&#xff0c;一个游戏&#xff0c;一个手机的话&#xff0c;你可以下载个虚拟机&#xff0c;然后本机直装&#xff0c;用虚拟机QQ扫码即可 微信…

使用资源编排 ROS 轻松部署单点网站——以 WordPress 为例

介绍 WordPress是一款免费开源的网站内容管理系统&#xff08;CMS&#xff09;&#xff0c;它可以帮助用户简单快捷地创建和管理自己的网站&#xff0c;包括博客、新闻网站、电子商务网站、社交网络等等。WordPress 有丰富的主题和插件库&#xff0c;使得用户可以轻松地为网站…

点线面推进未来智造

如今&#xff0c;宁波拥有门类齐全的制造业体系&#xff0c;形成了以石油化工、汽车及零部件、电工电器、纺织服装等为支柱的产业集群。 宁波工业的发展并非一蹴而就&#xff0c;蓝卓总经理谭彰详细解读了宁波制造业的发展历程与当下目标&#xff0c;从工业小市到工业大市、工业…

【深度学习】第5章——卷积神经网络(CNN)

一、卷积神经网络 1.定义 卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种专门用于处理具有网格状拓扑结构数据的深度学习模型&#xff0c;特别适用于图像和视频处理。CNN 通过局部连接和权重共享机制&#xff0c;有效地减少了参数数量&#x…

阿一课代表今日分享之使用dnscat2 进行dns隧道反弹shell(直连模式linux对linux)

DNS介绍 DNS是域名系统(Domain Name System)的缩写&#xff0c;是因特网的一项核心服务&#xff0c;它作为可以将域名和IP地址相互映射的一个分布式数据库&#xff0c;能够使人更方便的访问互联网&#xff0c;而不用去记住能够被机器直接读取的IP数串。 DNS的记录类型有很多&a…

数据结构--二叉树收尾

1.二叉树销毁 运用递归方法 分类&#xff1a; 根节点左子树右子树&#xff08;一般都是这个思路&#xff0c;不断进行递归即可&#xff09; 选择方法&#xff08;分析)&#xff1a; 前序&#xff1a;如果直接销毁根就无法找到左子树右子树 中序&#xff1a;也会导致丢失其…

非关系型数据库(NoSQL)与 关系型数据库(RDBMS)的比较

非关系型数据库&#xff08;NoSQL&#xff09;与 关系型数据库&#xff08;RDBMS&#xff09;的比较 一、引言二、非关系型数据库&#xff08;NoSQL&#xff09;2.1 优势 三、关系型数据库&#xff08;RDBMS&#xff09;3.1 优势 四、结论 &#x1f496;The Begin&#x1f496;…

【ai_agent】从零写一个agent框架(四)用rust制作一个python的虚拟运行环境。

前言 为了增加框架的扩展性和适用性&#xff0c;我们要能够在流程节点中运行python脚本。 这个时候需要考虑几个问题&#xff1a; 1 为什么是python&#xff1f; 思考&#xff1a;老实说我并不喜欢python&#xff0c;我更倾向于lua这种短小轻快的脚本。在我之前写的规则引擎…

fm足球经理Football Manager 2022 for mac 下载安装包

《Football Manager 2022》&#xff08;足球经理2022&#xff09;是一款由Sports Interactive开发并由SEGA发行的足球管理模拟游戏。这款游戏让玩家扮演足球俱乐部的 manager&#xff08;经理&#xff09;&#xff0c;负责球队的所有管理工作&#xff0c;包括战术制定、球员转会…

优画质低功耗,空域GPU超分技术引领图像渲染新体验

随着大数据时代的发展&#xff0c;虚拟现实、增强现实等需要实时图像处理和计算的应用&#xff0c;对GPU加速引擎服务提出了新的挑战和机遇。 HarmonyOS SDK GPU加速引擎服务&#xff08;XEngine Kit&#xff09;提供的空域GPU超分能力&#xff0c;基于单帧输入图像&#xff0…

NLP入门——卷积语言模型的搭建、训练与预测

语言模型建模是针对句子建模&#xff0c;主要分为掩码语言模型和自回归语言模型。 我们从corpus中截取一句话作为例子&#xff0c;这句话是bpe分词后的句子&#xff1a; 1994 年 5 月 17 日 安全 理事会 第 33 77 次 会议 通过 掩码语言模型的主要机制是&#xff1a;例如将33 7…

力扣爆刷第162天之TOP100五连刷76-80(最小路径和、最长公共前缀、最长连续序列)

力扣爆刷第162天之TOP100五连刷76-80&#xff08;最小路径和、最长公共前缀、最长连续序列&#xff09; 文章目录 力扣爆刷第162天之TOP100五连刷76-80&#xff08;最小路径和、最长公共前缀、最长连续序列&#xff09;一、64. 最小路径和二、221. 最大正方形三、162. 寻找峰值…

OpenCV距离变换函数distanceTransform的使用

操作系统&#xff1a;ubuntu22.04OpenCV版本&#xff1a;OpenCV4.9IDE:Visual Studio Code编程语言&#xff1a;C11 功能描述 distanceTransform是OpenCV库中的一个非常有用的函数&#xff0c;主要用于计算图像中每个像素到最近的背景&#xff08;通常是非零像素到零像素&…

「C++系列」C++ 修饰符类型

文章目录 一、C 修饰符类型1. 访问修饰符&#xff08;Access Modifiers&#xff09;2. 存储类修饰符&#xff08;Storage Class Specifiers&#xff09;3. 类型修饰符&#xff08;Type Modifiers&#xff09;4. 函数修饰符 二、C 修饰符类型-案例1. 访问修饰符案例2. 存储类修饰…

JavaSE 面向对象程序设计进阶 IO流 字符输入输出流及底层原理

目录 字符输入流FileReader 空参的read方法 带参的read方法 字符输出流FileWriter 字符输入流底层原理 字符输出流底层原理 字符输入流FileReader 输入流 一次读一个字节 遇到中文时 一次读多个字节 输出流 底层会把数据按照指定的编码方式进行编码 在变成直接写到文件当…

Defensor 4.5:构建数据资产为中心的安全运营体系

5月31日“向星力”未来数据技术峰会上&#xff0c;星环科技重磅发布数据安全管理平台 Defensor 4.5版本。新版本引入了以数据资产为中心的数据安全运营体系&#xff0c;通过智能化大模型技术&#xff0c;帮助企业快速、精准地识别核心重要资产&#xff1b;建设全局的数据安全策…

昇思MindSpore学习笔记6-04计算机视觉--Shufflenet图像分类

摘要&#xff1a; 记录MindSpore AI框架使用ShuffleNet网络对CIFAR-10数据集进行分类的过程、步骤和方法。包括环境准备、下载数据集、数据集加载和预处理、构建模型、模型训练、模型评估、模型测试等。 一、概念 1.ShuffleNet网络 旷视科技提出的CNN模型 应用在移动端 通…