目录
1、halcon代码的封装
2、halcon代码的导出
3、halcon与QT联合编程
3.1、QT工程建立
3.2、qt与halcon联合
在对代码进行封装的时候,你一定要考虑你的输入输出是什么?
以
输入:图像
输出:点、矩形、2个数字。(点和矩形是为了展示给客户看的)
步骤:
(1)首先选中要封装的代码,右键创建一个新函数,进入如下界面:
一般文档里面你也可以进行描述一下信息。
初学者暂时只需要选择本地程序函数即可,下边的库函数和函数文件,就是自己定义的可以一直用他一直存在。但是本地函数他是本地的,只存在这个项目中。
图中箭头的进出分别表示参数的输入与输出。
(2)点击应用就会完成函数的封装。
(3)查看函数体的话,右键点击封装的函数,点击显示函数就会进入函数体。
(4)进入函数体之后,,可以在函数体的正上方右边的编辑当前函数的接口和文档这个按钮,进入创建函数时的界面进行编辑。
(5)如果有一些函数不想使用可以点击halcon菜单栏中的函数菜单,
以上就是基于halcon的函数封装部分。
(导出之后再去写入QT界面)
在halcon界面的菜单栏项上选择文件---》导出语言,界面如下:
导出之后,在上述导出文件的路径下,你就可以看到程序了,此时这个程序就和halcon没有关系了,就是独立的cpp文件了。
(可以把刚才导出的cpp程序,拖进QT中看一下--------这一步只是拖进来看一下导出来的文件是个什么样子)
步骤:
(1)首先新建立一个工程。
文件----》新建立项目----》Qt Widgets Application---->choose
Location:名称与路径的填写
Build system:
Kits:
这一步一定要选中VS那个,(不要选择MinGW,在做QT练习的时候选择MinGW是可以的,但是做联合编程的时候就不要选择这个了。)
(选择MSVC不选择MinGW,所以这就是在安装QT之前,要先安装VS的原因。------这里只是个人习惯而已)
Details:
类名称(C)Class name:这个建议大家不要使用MainWindow,会很容易乱,类名称建议大家改一个和自己项目有关的,比如这里使用QtHalconRecLocate,那么下边的头文件(Header files)、源文件(Source file)、和界面文件(Form file)就会随着改变。
基类(B)Base class:这个是一个主窗口(可以使用QMainWindow).
汇总Summary:
最终生成的项目如下:
建立的工程项目,如上。
-------------------至此一个项目框架我们就建立好了。 -----------------
上边的都是自动生成的,不需要我们去写,需要我们做的是:
需要将我们想要实现的功能添加进来。
(1)在.pro里边:添加#include lib。(需要用到halcon,所以添加include lib项。
这里有一个代码管理,即在.pro上右键,选择在Explore中显示。来到如下路径下:
工程是.pro文件。
我们需要在上述路径下添加#include lib库和包含文件。
点击QT界面左边的项目,有一个编译地址(构建项目),这个地址默认写在我们当前目录下,这里build-QtHalcon-Desktop_Qt_5_13_2_MSVC2015_64bit-Debug。
而这里我们可以改一下,改为跟项目在一起。
点击生成,界面如下:
上述我们准备工作就做完了,包括:
1、qt的工程
2、halcon的导出
所以这两步只是把材料做好了,下面需要去加工了。加工才是精华.......
第一步:添加库(理论上是要找你自己库的所在位置,)为了便于管理在E:\QT\QtHalcon这个路径(也就是Explore显示所跳转到的这个路径下)先建立文件夹include包含头文件和lib静态链接库和bin动态链接库(bin一般也可以放在release下边)
在include文件夹下边,首先再建立一个文件夹includehalcon20x64(因为担心后边还有其他的include文件包含也放在include下边,防止弄混)
首先找到halcon的安装目录,找到你安装的halcon文件所在位置(本人halcon安装在F盘下)即F:\softinstall\Study_Software\Halcon\include,把这个路径下的文件全部复制进includehalcon20x64这个文件夹下去。(全部复制进来肯定不会有错,也可以把下图所红框的4个不要,这样以免没用的占用磁盘空间;还有的人操作是链接过来,就想配置pcl库时把路径链接过来,但是个人觉的链接的不方便,因为每个人安装的halcon位置不一样;所以提倡放在这个相对路径下,当你把代码发布给别人时,他不用去改一些东西。)
同理lib文件夹下也重新建立一个libhalcon20x64,把halcon安装目录下的lib文件也复制进来(这里可以暂时只复制halocn.lib和halconcpp.lib这两个即可)。
第2步:添加到工程代码即把这两个包含到我们的工程代码下边。(在VS里边是通过添加属性一项一项来添加的,QT完全是使用代码来加的) 中间的DEPENDPATH解释是说应用程序依赖的搜索路径。用qt自带的添加库的方法,这几个代码会自动生成。
-L和-l表示这是一个lib库(路径添加就是这样固定的,直接记住就行没有为什么)
第3步:添加路径完成后双击点击.ui文件,开始写窗口。
(1)拖进来一个Graphic View。就是qt的一个窗口。如果图像多的话也可以拖多个。
在右边黄色属性框里边,可以修改大小,名称等。
可以写成固定大小:
(2)拖进来一个Push Button,并将名字修改为打开图片(直接双击这个button按钮可以修改名字的)。并在黄色属性窗口上做如下修改:
(3)拖进来一个Group Box。并直接修改名字为设置。(并附带着把打开图片这个Button放到设置这个大的Box里边来)
(4)再拉进来一个垂直的弹簧Vertical Spacer,并在设置这个大的Box上右键,布局改为垂直布局。在整个大的就是最开始还没有拖进来Graphic View这个的时候上面右键---》布局----》做一个水平布局,这样水平与垂直高度都比较均衡,比较美观。
此时你就会看到右边黄色窗体上边Group Box下边有两个功能,那么这3个就是一个组合。每一个包含里边都是一个组合。
按钮上直接的修改名字都是现在这个拖进来的Box或者button上改名字,然后再在黄色框内做以修改。
简单的功能到此结束,全部保存关闭这个.ui,再去编译一下即可。如下就是我们编译出来的一个项目:
------------------至此与halcon还没有发生关系-----------------------下面要导东西进去。
第4步:代码整合
4.1:第一步:在.ui上的打开图片上右键转到槽,
选第一个点击ok
4.2:第二步:在头文件qthalconreclocate.h这个里边加入include文件还有命名空间。
#include "HalconCpp.h" using namespace HalconCpp;
下面进入qthalconreclocate.cpp去写打开图片这个功能。在pB_OpenImage_clicked()下边。
此时直接可以把刚才导出的halcon代码拖进来,先把导出的halcon代码里边的前缀hv_和ho_给删除掉,因为这个是halcon自带的一个前缀没用(个人习惯)
4.3:第三步:搜索action函数,一般拷文件就是拷贝这个里边的文件。把这里边的变量和函数分别拿出来放到对应的Button下。
1、先绑定窗口
具体操作见详细代码,内部有注释。
最终实现的联合编程界面如下:
如果在执行代码的过程中,要善于使用断点调试。
完整代码链接: