news 2026/6/26 21:53:55

基于Qt 5.12.4的Halcon视觉流程框架编译测试成功报告

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于Qt 5.12.4的Halcon视觉流程框架编译测试成功报告

qt联合halcon视觉流程框架 正常编译 测试正常 qt5.12.4

直接上手搞Qt+Halcon的环境配置可能会遇到不少坑,这里分享下我的踩坑记录。先说下环境:Qt5.12.4+VS2017,Halcon用的是20.11版本。整个过程最头疼的就是动态库加载和内存管理的问题。

首先在.pro文件里配置Halcon的路径,这里有个小细节要注意版本号:

win32 { HALCON_ROOT = C:/Halcon20.11 INCLUDEPATH += $${HALCON_ROOT}/include LIBS += -L$${HALCON_ROOT}/lib/x64-win64 LIBS += -lhalconcpp -lhalcon }

这里容易栽跟头的地方是x64和x86架构的选择。如果Qt是用MSVC编译的,一定要确认Halcon的lib目录是否对应。我遇到过明明配置正确却报LNK2019的情况,最后发现是项目属性里没改到x64平台。

qt联合halcon视觉流程框架 正常编译 测试正常 qt5.12.4

测试代码里建议先做个简单的图像加载:

#include "HalconCpp.h" using namespace HalconCpp; void testHalcon() { HImage img; HTuple width, height; img.ReadImage("test.png"); img.GetImageSize(&width, &height); qDebug() << "图像尺寸:" << width.I() << "x" << height.I(); }

运行前记得把halcon.dll、halconcpp.dll等十几个动态库扔到exe目录。有个取巧的方法:直接把Halcon安装目录下的bin/x64-win64整个文件夹加入系统Path,这样调试的时候不用来回拷贝dll。

碰到内存泄漏问题可以试试Halcon的垃圾回收机制:

HImage* img = new HImage(); img->ReadImage("test.jpg"); // 处理图像... HHandleBase::ClearHandle(*img); // 手动释放

实测发现用栈对象比堆对象更安全,特别是涉及到HObject的子类时。跨线程操作要注意Halcon的上下文管理,建议每个线程单独创建HInstance对象。

最后说下界面线程和算法线程的交互。用Qt的信号槽传递Halcon对象时,记得先Serialize/Unserialize:

// 发送端 QByteArray buffer; HImage img = grabImage(); img.Serialize(&buffer); emit imageReady(buffer); // 接收端 HImage receivedImg; receivedImg.Deserialize(buffer);

这样处理比直接传HImage指针安全得多,实测在跨线程传输2000x2000的大图时,序列化耗时大概15ms左右,完全可以接受。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/26 18:38:30

西门子200smart PLC脉冲除尘器程序大揭秘

西门子200smart PLC所写程序的脉冲除尘器程序&#xff0c;昆仑通态触摸屏&#xff0c;包含PLC程序&#xff0c;触摸屏组态画面&#xff0c;工艺流程&#xff0c;电气原理图。 真实工程项目&#xff0c;目前稳定运行一年多嘿&#xff0c;各位工控小伙伴们&#xff01;今天来跟大…

作者头像 李华
网站建设 2026/6/24 11:27:54

基于深度学习YOLOv10的垃圾分类检测系统(YOLOv10+YOLO数据集+UI界面+Python项目源码+模型)

一、项目介绍 项目背景 随着城市化进程加快和人口增长&#xff0c;垃圾产生量急剧增加&#xff0c;传统垃圾分类方法效率低下。基于计算机视觉的自动垃圾分类系统可以显著提高分类效率和准确性&#xff0c;降低人力成本。 技术方案 本项目采用最新的YOLOv10目标检测算法实现…

作者头像 李华
网站建设 2026/6/24 11:31:53

vue | nodejs版本调换指令(npm、nrm)

注意&#xff1a; 1.在下载nvm的时候一定要注意保存路径里没空格&#xff08;之前一些配置都放在一个带空格的文件夹下也没啥问题&#xff0c;抱着侥幸心理结果直接报错&#xff09; 2.nrm和npm 一、nvm相关 查看可供下载的node版本 nvm list available 下载版本&#xf…

作者头像 李华
网站建设 2026/6/25 17:15:24

少走弯路:AI论文网站 千笔写作工具 VS 学术猹,研究生必备!

随着人工智能技术的迅猛迭代与普及&#xff0c;AI辅助写作工具已逐步渗透到高校学术写作场景中&#xff0c;成为专科生、本科生、研究生完成毕业论文不可或缺的辅助手段。越来越多面临毕业论文压力的学生&#xff0c;开始依赖各类AI工具简化写作流程、提升创作效率。但与此同时…

作者头像 李华
网站建设 2026/6/25 13:12:18

JS判断对象为空怎么实现?详解两种常用方法

在实际的前端开发工作中&#xff0c;我们经常需要判断一个JavaScript对象是否为空对象。这看似简单&#xff0c;却隐藏着不少细节和陷阱。一个空对象通常指一个没有任何自身可枚举属性的对象。直接使用if (obj)或if (obj {})是无效的&#xff0c;我们需要更可靠的方法来应对不…

作者头像 李华