一、QT准备
1、创建QT带UI的文件
2、添加按钮界面,运行
显示窗口名字为:
普通按钮名字为:
3、添加Halcon的库文件
bin文件夹里面尽量全部包含(主要是:halcon.dll halconcpp.dll 这两个文件)放入QT文件夹里面的realse文件下。
include文件夹里面全部复制粘贴到QT下面的include文件里面(自己创建文件夹)
lib文件夹里面的(halcon.lib halconcpp.lib)这两个文件复制粘贴到QT下的lib文件里面
4、在.pro工程文件中包含库目录
根据自己需要调整路径
INCLUDEPATH += $$PWD/include/halcon
INCLUDEPATH += $$PWD/include/halcon/halconcpp
LIBS += -L$$PWD/lib/halcon -lhalcon
LIBS += -L$$PWD/lib/halcon -lhalconcpp
5、添加头文件
在.h文件里面添加halcon头文件
#include <HalconCpp.h>
using namespace HalconCpp;
6.QT绑定Halcon窗口
1.此时一定要声明全局变量窗口 (注意注意注意:如果声明了全局变量窗口,则此后每个函数里面声明的局部窗口可以删除,要不然会卡死)
HTuple hv_WindowHandle;
2.如果其它类也需要使用次窗口,添加此声明
extern HTuple hv_WindowHandle;
//获取QT窗口ID
Hlong windIDDepth=this->ui->gvDepthMap->winId();
//声明halcon变量
HTuple hv_Width, hv_Height;
//把QT窗口的长宽取出来
hv_Width=ui->gvDepthMap->width();
hv_Height=ui->gvDepthMap->height();
//打开halcon窗口
OpenWindow(0,0,hv_Width,hv_Height,windIDDepth,"visible","",&hv_WindowHandle);
二:Halcon准备
1.编写halcon显示程序
*读图
read_image(Image, '1')
*获取图像大小
get_image_size(Image, Width, Height)
*打开窗口(这一步就是上面绑定QT窗口的打开窗口)
dev_open_window(0, 0, Width,Height,'black',WindowHandle)
*使图像合适窗口大小打开
dev_set_part(0, 0,Height, Width)
*显示图像
dev_display(Image)
2.导出C++语言
3.找到action函数,把里面的程序复制粘贴到对应的QT按钮下的槽函数里面
4、调试运行
三、额外算法联合编程
如果有其它额外算法需要实现特定的功能,则可以在QT的此文件下,再次添加一个带QT界面设计师的类(此方法可以使程序更加有条理,阅读清晰)
1.在QT的主程序中添加包含此类头文件
2.然后在此类的UI界面上创建按钮
3.在主程序的.h(头文件)中声明实例化此类
LocateCircle *m_pLocateCircle;
把此类的UI界面添加到主界面上
m_pLocateCircle=NULL;
m_pLocateCircle=new LocateCircle();
ui->mainTab->addTab(m_pLocateCircle,QString::fromLocal8Bit("添加功能的标题"));
4.完成两个界面的合并
若以打开文件的形式去读图图像
HTuple hv_Row1, hv_Column1, hv_Radius;
//传入路径
QString path = QFileDialog::getOpenFileName(this,"选择图片","","JPG文件(*.jpg;*.bmp)");
if(path == "") return;
//读图
HTuple file2=HTuple(path.toStdString().c_str());
ReadImage(&ho_Image,file2);
//直径读取图像
// ReadImage(&ho_Image, "./data/1");
//图像处理算法
GenCircleCenterFromBlob(ho_Image, &hv_Row1, &hv_Column1, &hv_Radius);
已经看到这里了,不妨点个赞和关注吧!
刚开始写文章,如有不足请多多包含;之后会持续更新关于(halcon学习,VS联合编程,QT联合编程,C++,C#,Opencv图像处理库,三维点云库pcl,相机以及机器人的二次开发)等系统化学习文章。