【机器视觉】Qt集成Halcon开发环境详解(二)
00. 目录
01. 概述
Qt中集成Halcon开发环境有两种配置方案。第一种方案是使用环境变量来代替路径,并考虑平台移植问题。第二种方案是第三方库的使用,将用到的头文件和库直接打包到项目中,不用在客户机安装Halcon软件。
02. Halcon动态库配置方案一
配置简单,但移植后的机器需要安装Halcon软件。
2.1安装Halcon的环境变量
HALCONROOT代表当前环境下Halcon安装根目录。
HALCONARCH代表当前环境下Halcon的架构名称
2.2 配置Halcon头文件和库
# HALCON/Qt pattern matching and measure example
#
# (c) 2004-2019 MVTec Software GmbH
# matching.pro
#
CONFIG += qt debug
QT += core gui widgets
#defines
win32:DEFINES += WIN32
#includes 指定Halcon头文件所在目录
INCLUDEPATH += "$$(HALCONROOT)/include"
INCLUDEPATH += "$$(HALCONROOT)/include/halconcpp"
#libs 指定Halcon所需的库
QMAKE_LIBDIR += "$$(HALCONROOT)/lib/$$(HALCONARCH)"
unix:LIBS += -lhalconcpp -lhalcon -lXext -lX11 -ldl -lpthread
win32:LIBS += "$$(HALCONROOT)/lib/$$(HALCONARCH)/halconcpp.lib" \
"$$(HALCONROOT)/lib/$$(HALCONARCH)/halcon.lib"
#sources
HEADERS += qhalconwindow.h
HEADERS += matching.h
SOURCES += qhalconwindow.cpp
SOURCES += matching.cpp
SOURCES += main.cpp
或者
# matching.pro
#
CONFIG += qt debug
QT += core gui widgets
#defines
win32:DEFINES += WIN32
#includes 指定Halcon头文件所在目录
INCLUDEPATH += "$$(HALCONROOT)/include"
INCLUDEPATH += "$$(HALCONROOT)/include/halconcpp"
#libs 指定Halcon所需的库
QMAKE_LIBDIR += "$$(HALCONROOT)/lib/$$(HALCONARCH)"
unix:LIBS += -lhalconcpp -lhalcon -lXext -lX11 -ldl -lpthread
win32:LIBS += halconcpp.lib halcon.lib
#sources
HEADERS += qhalconwindow.h
HEADERS += matching.h
SOURCES += qhalconwindow.cpp
SOURCES += matching.cpp
SOURCES += main.cpp
2.3 编译测试
2.4 运行结果
温馨提示
配置时建议使用环境变量来代替路径,并考虑平台移植问题
温馨提示
C:\Users\Public\Documents\MVTec\HALCON-19.11-Progress\examples\cpp\qt\Matching
03. Halcon动态库配置方案二
第三方库的使用,将用到的头文件和库直接打包到项目中,这种情况下不需要在客户机安装Halcon软件。
3.1在Qt项目目录中创建include和lib目录
3.2 将MVTec\HALCON-19.11-Progress\include目录下所有的文件拷贝到新建的include目录下。
3.3 将MVTec\HALCON-19.11-Progress\lib\x64-win64目录下所有的文件拷贝到新建的lib目录下。
3.4 找到MVTec\HALCON-19.11-Progress\bin\x64-win64与lib文件下*.lib文件重名的*.dll文件,并复制到新建的lib文件下

实际上只用到了一下几个文件
3.5 添加库
3.6 添加外部库,点击下一步
3.7 添加halconcpp库的配置
3.8 添加halcon库的配置
3.9 添加halcon相关头文件的目录

# matching.pro
#
CONFIG += qt debug
QT += core gui widgets
#defines
win32:DEFINES += WIN32
#sources
HEADERS += qhalconwindow.h
HEADERS += matching.h
SOURCES += qhalconwindow.cpp
SOURCES += matching.cpp
SOURCES += main.cpp
INCLUDEPATH += $$PWD/include
INCLUDEPATH += $$PWD/include/halconcpp
win32: LIBS += -L$$PWD/lib/ -lhalconcpp
INCLUDEPATH += $$PWD/lib
DEPENDPATH += $$PWD/lib
win32: LIBS += -L$$PWD/lib/ -lhalcon
INCLUDEPATH += $$PWD/lib
DEPENDPATH += $$PWD/lib
温馨提示
PWD指的是项目所在路径
3.10 编译,运行结果如下

04. 问题讨论
4.1 出现Error #5190: HALCON error #5190: Invalid window parameter错误
错误提示如下:
解决办法:
SetWindowParam函数需要依赖动态库文件hcanvas.dll,把该库从C:\Program Files\MVTec\HALCON-19.11-Progress\bin\x64-win64拷贝到自己的项目路径lib目录下。
05. 附录
5.1 测试代码下载
5.2 参考博客
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)