当前位置: 首页 > news >正文

qt配合halcon深度学习网络环境配置

1.开发环境qt6,编译器MSCV2019,网络是halcon的对象检测,halcon用20.
2.建立qt项目
3.到halcon安装目录下复制include,lib这两个文件夹到qt项目中进行引用
请添加图片描述
请添加图片描述
4.引用到halcon静态库后,到halcon运行目录下找到静态库对应dll文件,还有引用深度学习的halcondl.dll跟halcondlxl.dll,hcanvas.dll
请添加图片描述
5.找齐这些文件后,把文件复制到qt软件运行目录下
请添加图片描述
6.到halcon运行目录下复制thirdparty文件夹到qt运行目录,不然软件运行时,halcon查找设备只能找到cpu,找不到gpu。
7.qt中加载halcon模型代码


void DeelLearning::ReadModel(QString path_model_,QString path_proparameter_)
{try{_path_model="";_path_model_proparameter="";if(_exit_model==true){HalconCpp::ClearDlModel(_dl_model_handle);HalconCpp::ClearHandle(_dl_device_handles);}_exit_model=false;/***读取模型预处理参数***/HalconCpp::HTuple hpath_proparameter_;hpath_proparameter_ = path_proparameter_.toStdString().c_str();HalconCpp::ReadDict(hpath_proparameter_,HalconCpp::HTuple(),HalconCpp::HTuple(),& this->_dl_model_proparameter);/***读取模型***/HalconCpp::HTuple hpath_model_=path_model_.toStdString().c_str();HalconCpp::ReadDlModel(hpath_model_,&this->_dl_model_handle);/***读取驱动***/HalconCpp::HTuple gen_param_name_devices_,gen_param_value_devices_;gen_param_name_devices_[0]="runtime";gen_param_name_devices_[1]="runtime";gen_param_value_devices_[0]="gpu";gen_param_value_devices_[1]="cpu";HalconCpp::QueryAvailableDlDevices(gen_param_name_devices_,gen_param_value_devices_,&_dl_device_handles);int dl_device_handles_count_=_dl_device_handles.Length();qDebug() << "dl_device_handles_count"+QString::number(dl_device_handles_count_);HalconCpp::HTuple dl_device_type_="";HalconCpp::GetDlDeviceParam(_dl_device_handles[0],"type",&dl_device_type_);/***提示下当前变量***/qDebug() << dl_device_type_.ToString().Text();/***设置模型驱动***/HalconCpp::SetDlModelParam(_dl_model_handle,"device",_dl_device_handles[0]);/***设置模型批量***/HalconCpp::SetDlModelParam(this->_dl_model_handle,"batch_size",1);_exit_model=true;_path_model=path_model_;_path_model_proparameter=path_proparameter_;}catch (HalconCpp::HException ex){qDebug()<<ex.ErrorMessage().Text();}
}

8.qt中推理代码


void DeelLearning::AnalyzeImage()
{if(_exit_image==true&&_exit_model==true){HalconCpp::HTuple pro_image_width_,pro_image_height_,pro_image_num_channels_,pro_image_range_min_,pro_image_range_max_,pro_image_normalization_type_,pro_image_domain_handling_;/***获取预处理参数***/HalconCpp::GetDictTuple(this->_dl_model_proparameter,"image_width",&pro_image_width_);qDebug() << pro_image_width_.ToString().Text();HalconCpp::GetDictTuple(this->_dl_model_proparameter,"image_height",&pro_image_height_);qDebug() << pro_image_height_.ToString().Text();HalconCpp::GetDictTuple(this->_dl_model_proparameter,"image_num_channels",&pro_image_num_channels_);qDebug() << pro_image_num_channels_.ToString().Text();HalconCpp::GetDictTuple(this->_dl_model_proparameter,"image_range_min",&pro_image_range_min_);qDebug() << pro_image_range_min_.ToString().Text();HalconCpp::GetDictTuple(this->_dl_model_proparameter,"image_range_max",&pro_image_range_max_);qDebug() << pro_image_range_max_.ToString().Text();/*****预处理图片****/HalconCpp::HTuple dl_sample_batch_;HalconCpp::CreateDict(&dl_sample_batch_);HalconCpp::ConvertImageType(this->_image,&this->_image,"real");HalconCpp::ZoomImageSize(this->_image,&this->_image,pro_image_width_,pro_image_height_,"constant");HalconCpp::HTuple rescale_range=(pro_image_range_max_-pro_image_range_min_)/255;HalconCpp::ScaleImage(this->_image,&this->_image,rescale_range,pro_image_range_min_);HalconCpp::SetDictObject(this->_image,dl_sample_batch_,"image");HalconCpp::HTuple dl_result_batch_;HalconCpp::ApplyDlModel(_dl_model_handle,dl_sample_batch_,HalconCpp::HTuple(),&dl_result_batch_);HalconCpp::GetDictTuple(dl_result_batch_,"bbox_row1",&_bbox_row1);HalconCpp::GetDictTuple(dl_result_batch_,"bbox_col1",&_bbox_col1);HalconCpp::GetDictTuple(dl_result_batch_,"bbox_row2",&_bbox_row2);HalconCpp::GetDictTuple(dl_result_batch_,"bbox_col2",&_bbox_col2);HalconCpp::GetDictTuple(dl_result_batch_,"bbox_class_id",&_bbox_class_id);HalconCpp::GetDictTuple(dl_result_batch_,"bbox_class_name",&_bbox_class_name);HalconCpp::GetDictTuple(dl_result_batch_,"bbox_confidence",&_bbox_class_confidence);}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SQLite Insert 语句
  • 反射: 获取变量类型
  • 【例003】利用MATLAB绘制有趣平面图形
  • 基于多种机器学习的房价预测研究【数据抓取、预处理、可视化、预测】
  • 【鸿蒙蓝牙连接】
  • 【网络安全】子域名接管概念+实例详析
  • vuex和Pinia
  • 一文读懂网络安全
  • 基于微信小程序的挂号管理系统-小程序端
  • ARM的寄存器组织
  • 代码审计总结
  • 『功能项目』DOTween动态文字【26】
  • 10、Django Admin修改标题
  • 每日一练 | 复杂流分类的应用
  • 完整指南:CNStream流处理多路并发框架适配到NVIDIA Jetson Orin (一) 依赖库编译、第三方库编译安装
  • [Vue CLI 3] 配置解析之 css.extract
  • HomeBrew常规使用教程
  • MD5加密原理解析及OC版原理实现
  • PHP那些事儿
  • Rancher如何对接Ceph-RBD块存储
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spring Boot MyBatis配置多种数据库
  • 创建一个Struts2项目maven 方式
  • 多线程 start 和 run 方法到底有什么区别?
  • 关于Java中分层中遇到的一些问题
  • 计算机常识 - 收藏集 - 掘金
  • 简单易用的leetcode开发测试工具(npm)
  • 老板让我十分钟上手nx-admin
  • 前端之Sass/Scss实战笔记
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • ​人工智能书单(数学基础篇)
  • (16)Reactor的测试——响应式Spring的道法术器
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (ibm)Java 语言的 XPath API
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (办公)springboot配置aop处理请求.
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (个人笔记质量不佳)SQL 左连接、右连接、内连接的区别
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (六)软件测试分工
  • (十五)使用Nexus创建Maven私服
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转)Google的Objective-C编码规范
  • (转)详解PHP处理密码的几种方式
  • .NET 8.0 中有哪些新的变化?
  • .net core 客户端缓存、服务器端响应缓存、服务器内存缓存
  • .NET Core工程编译事件$(TargetDir)变量为空引发的思考
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .NET gRPC 和RESTful简单对比
  • .net MySql
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET处理HTTP请求