下载程序
关于QT配置halcon,一个原则就是要使用msvc版本的QT才能成功。博主这里使用的是QT6加vs2019。其他的版本也是一样的,只要QT和vs版本对应就行了。
首先下载vs2019 ,下载地址
关于安装vs2019,可以看这篇博文,传送门
然后就是安装QT6了。关于安装QT6,需要一个QT账户,去QT官网注册一个就行了。
详细安装教程可以看这篇博文,需要注意的是,在安装选项的时候,要选择安装QT5 兼容模块,和选择安装msvc2019,
安装和下载的,传送门。
配置环境
两个程序都下载好后,打开QT,选择工具,选项
如果你的界面如下,说明软件编译环境配置正常了。
下面开始配置halcon
首先在你项目的pro文件下添加如下代码,
为了防止你们输错,我粘贴下来
greaterThan(QT_MAJOR_VERSION,5): QT += core5compat
CONFIG += c++11
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
INCLUDEPATH += $$PWD/include/halcon19X64
INCLUDEPATH += $$PWD/include/halcon19X64/halconcpp
DEPENDPATH += $$PWD/include/halcon19X64
DEPENDPATH += $$PWD/include/halcon19X64/halconcpp
LIBS += -L$$PWD/lib/halcon19X64 -lhalcon
LIBS += -L$$PWD/lib/halcon19X64 -lhalconcpp
上面的步骤其实是引入头文件和动态连接库
现在去你的项目目录下新建两个文件,一个是include,一个是lib,在两个文件下再新建一个叫halcon19X64的文件。
然后去你的halcon安装目录下拷贝东西过来
1.将halcon中的include文件下的所有文件全部拷贝到项目目录下的include/halcon19X
64下(为了防止出错,全部拷贝最好,博主没有全部拷贝),关系是include/halcon19X64/你拷贝的文件
2.拷贝halcon目录下的lib\x64-win64中的两个动态halcon.lib和halconcpp.lib到项目目录下lib\halcon19X64\你拷贝的文件
还需要拷贝下面目录下的两个文件halcon.dll和halconcpp.dll到项目目录下lib\halcon19X64\你拷贝的文件
测试
然后就配置好了,引入头文件和命名空间
如果报错,就去目录下删除这三个文件再重新执行。
然后在项目界面添加一个graphicsView控件和一个按钮。
测试代码如下:
头文件
.cpp文件
#include "widget.h"
#include "ui_widget.h"
#include <QFileDialog>
#include <QTextCodec>
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
//启用本地编码文件
QTextCodec::setCodecForLocale(QTextCodec::codecForLocale());
ui->setupUi(this);
//绑定窗口
Hlong WindID = (Hlong)this->ui->graphicsView->winId();//将视图窗口iD转换类型
//将halcon窗口绑定在graphicsView上,并以后用hv_WindowHandle来显示
OpenWindow(0,0,ui->graphicsView->width(),ui->graphicsView->height(),WindID,"visible","",&hv_WindowHandle);
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_clicked()
{
HTuple finalpath;
QString path = QFileDialog::getOpenFileName(this,"select image","","(*.png *.jpg)");//选择图片
if(path=="")
{
return;
}
else
{
finalpath = HTuple(path.toLatin1().data());//转换路径格式
ReadImage(&ho_Image,finalpath);//读取图片
GetImageSize(ho_Image, &hv_Width, &hv_Height);//获取图片宽高
SetPart(hv_WindowHandle,0,0,hv_Height,hv_Width);//自适应显示
ClearWindow(hv_WindowHandle);//清空窗口
DispObj(ho_Image,hv_WindowHandle);//显示图片
}
}
结尾
如果有什么问题,欢迎留言,看到了我就回帮你解决的,请点赞。