个人总结详细版的C++调用Opencv和Halcon封装dll

一、前言:
在C++调用opencv和Halcon封装的过程中踩过很多坑,然而网上却查不到清晰地教程。在此个人总结详细教程,以免后人踩坑。记录下,以后自己忘了也可以来看看。
二、教程细节
2.1 我使用的IDE是vs2017,下面所有的介绍也都是以此IDE为基础。
第一步:选择C++动态链接库DLL
在这里插入图片描述
第二步:根据自己需要更改解决方案平台,我的是X64。下图中位置2是系统自己生成的。
在这里插入图片描述
第三步:把需要用到的核心库放在代码文件夹下,方便后续调用。也可以不放,不过这样就需要引用opencv或者halcon的安装目录。
在这里插入图片描述
第四步:配置Opencv和Halcon环境,主要配置两个地方。VC++的包含目录和库目录,链接器输入的附加依赖项。
在这里插入图片描述
在这里插入图片描述
第五步:创建并编辑算法函数类和接口函数类。也可以只用一个类里面既包含算法函数又包含对应的接口。我个人习惯分开。下图1是接口类,下图2是算法函数类。
在这里插入图片描述
第六步:编辑函数和接口,接口函数格式如下:
6.1 extern “C” _declspec (dllexport) int myAddFunction_interface(int a, int b);
6.2 DllEntry.h需要引用Function.h,才能调用Function.h里面的函数。
6.3 Function.h 需要
#include <Halcon.h>
#include <HalconCpp.h>
#include “opencv.hpp”
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
using namespace std;
using namespace HalconCpp;
using namespace cv;
才能调用Halcon和Opencv的算子。
6.4 DllEntry.h需要引用
#include <Halcon.h>
#include <HalconCpp.h>
using namespace std;
using namespace HalconCpp;
才可以封装这种函数,参数类型是Hobject类型的函数。可以在QT调用的时候直接传Hobject,不用像传统的封装函数需要传递图像指针。这样,利用Halcon做图像处理时更方便。
在这里插入图片描述
在这里插入图片描述

第七步:到这里,算法封装步骤基本结束。下面开始创建QT程序。QT程序创建过程简单,不做介绍。直接讲如何调用刚才封装好的Dll。
7.1 把封装好的DllForQt.dll和DllForQt.lib还有接口类的头文件DllEntry.h放入QT程序的exe执行目录下。然后配置QT程序的项目属性,主要是配置两个地方,C/C++常规附加包含目录,链接器常规附加库目录,链接器输入附加依赖项。前面的两个目录都是DLL和Lib所在的目录,其实就是QT程序的exe执行目录。链接器输入附加依赖项里面输入DllForQt.lib。把dll封装的代码里面所有的头文件全部放入QT程序的exe执行目录下。如果想封装并且传递结构体参数,但是结构体是在Function.h 里面声明的,所以QT中需要引用Function.h 这个头文件。在QT中引用这两个头文件。步骤图片如下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值