如何使用QT框架进行海康机器视觉算子SDK二次开发

本文档详细介绍了使用QT进行算子SDK二次开发所需的知识点,包括开发环境配置、算子工具调用流程及结果渲染等内容。

目录

1.使用QT进行算子SDK二次开发需要了解那些知识?

1.1 了解SDK的安装目录下各个文件的作用。

1.1.1 头文件和静态库

1.1.2 C#需要引用的库

1.1.3 运行时依赖库

1.1.4 帮助文件

1.1.5 环境检测等实用工具

1.2 具备基本的C++编程基础知识

1.3 了解算子SDK在底层做了哪些工作?

1.3.1 算子SDK 简化了算子的初始化流程

1.3.2 算子SDK简化了参数设置和参数获取

1.3.3 算子SDK以面向对象的方式封装了算子工具

2.算子SDK二次开发QT开发环境配置

2.1 使用QtCreator作为集成开发环境

2.2 使用VisualStudio作为集成开发环境

3.典型的算子工具调用流程

4.如何渲染算子工具的运行结果

5.在VisualStudio环境中如何编辑渲染控件的信号和槽


1.使用QT进行算子SDK二次开发需要了解那些知识?

1.1 了解SDK的安装目录下各个文件的作用。

  1. 用户在安装完Vision Master软件之后,默认会在C盘Program Files(x86)目录下安装算子开发包,典型的路径是这样的:

    C:\Program Files (x86)\MVDAlgorithmSDK

    在此目录下,应该会看到以下文件夹

         

下面分别讲一下图中各个文件夹的作用。

1.1.1 头文件和静态库

使用C++语言进行算子SDK二次开发,最为常见的方式是使用静态库.lib加头文件.h的方式,因此Includes和Libraries这两个文件夹是我们所关心的。后面在开发环境配置中会重点介绍着两个文件夹如何引用。

1.1.2 C#需要引用的库

其中ReferencedAssemblies文件夹中用户也可以发现大量的DLL,这些DLL是使用C#语言进行算子二次开发才需要用到的,对于C++开发者来说不需要关心,所以不必关注 。

1.1.3 运行时依赖库

Runtime文件夹非常重要,这是使用算子SDK开发的应用程序运行时需要依赖的动态库,缺少它您开发的应用程序将无法运行,如果您想要在一台没有安装算子SDK软件包的电脑上运行您的二次开发程序,您可以将Runtime文件下的x64文件夹(如果是32位系统,就是win32文件夹)下的所有文件复制到你开发的exe所在目录即可。对于在一台已经安装了算子SDK开发包的电脑上运行您开发的视觉应用程序,则完全不必进行前面所说的操作,因为Runtime的路径已经写到环境变量中,程序运行时依赖的动态库会首先从环境变量中查找。

1.1.4 帮助文件

  Documents文件夹存放的时开发需要查询的开发的帮助文档,这个文档对于视觉应用开发者来说是非常重要的,算子类库的用法和各种内置数据类型可以通过查询文档知道。

Samples文件夹存放的是二次开发示例程序,如果您需要快速入门,可以直接跳到这个文件夹内查看相关的示例程序。

1.1.5 环境检测等实用工具

MVDTools文件夹存放是环境的检测工具之类的应用程序,视觉应用的二次开发不必了解这个。

1.2 具备基本的C++编程基础知识

首先,具备基础的C++编程知识,算子SDK开发需要掌握的C++知识点并不多,并不需要对C++各种知识面面俱到的了解。这里对其中涉及到的一些基础知识点做一些简单介绍,以便在二次开发过程中能很好的理解算子SDK的用法。

在算子SDK中,开发者会经常遇到I开头的类,例如IMvdImage, IMvdShape, IHPFeaturePatMatchTool , 这个IInterface的首字母,所以IMvdImage, IMvdShape等都是抽象类,是不可以直接实例化的,所以类似下面这样的语句是无意义的。

IMvdImage image

你也不可以像下面这样写,编译通不过的:

IMvdImage *pImage = new IMvdImage();

以IMvdImage这个图像类举例来说,正确的用法是这样的:

//读取D盘下的图像文件testImage.bmp
IMvdImage *pImage;
CreateImageInstance(&pImage);
pImage.InitImage(“D:\\testImage.bmp”,MVD_PIXEL_MONO_08);

在算子SDK中绝大多数类都是抽象类,都不能直接实例化,需要显式的调用CreateXXXInstance(XXX指代某个具体类,如Image类),然后才能对其进行操作,否则就会出现空引用,从而引发程序异常。

1.3 了解算子SDK在底层做了哪些工作?

1.3.1 算子SDK 简化了算子的初始化流程

算子SDK的二次开发简化了算子的初始化工作。在算子初始化过程中,需要对算子进行加密校验和解密,然后根据算子的能力集进行内存分配,除此之外,还需要对常用的运行参数设置初始的默认值,这些工作对于视觉应用的开发者来说较为繁琐和重复,因此算子SDK对这些流程都做了封装,开发者只需要一行代码就可以实现算子的初始,大大降低了开发者调用底层机器视觉算法的难度和负担。

1.3.2 算子SDK简化了参数设置和参数获取

算子SDK的二次开发简化了算子的参数设置,算子的运行参数在底层实际上是对应不同的结构体,在开发者不了解这些运行参数的数据类型和结构体的情况下,想要直接设置底层算子的运行参数难度就很大。但算子SDK对这参数设置这部分也做了很好的封装,用户只需要调用算子工具的SetParam函数接口,就可以在不了解底层算子运行参数结构体的情况下,也能将参数设置进去。SetParam函数提供了两个参数,一个参数是paramName, 一个参数是paramValue,开发者只需要查阅帮助文件,找到对应工具的参数表格,就可以设置参数。例如:设置快速模板匹配工具的最小匹配得分:

FastFeatureMatchTool1.SetParam(“MinScore”,”0.65”);

同样,开发者通过GetParam接口也能很方便的获取算子工具的当前参数

### 如何使用Qt进行海康SDK二次开发 #### 配置开发环境 在Qt Creator中配置海康机器视觉算子SDK二次开发,主要涉及设置项目文件(.pro),以便正确链接库和头文件。此过程相对简便,因为qmake工具能够依据.pro文件自动生成Makefile[^1]。 ```cpp // .pro 文件示例配置 INCLUDEPATH += /path/to/Hikvision/headers LIBS += -L/path/to/Hikvision/libs -lHikvisionLibName ``` #### 将MvCamera集成至项目 为了简化操作流程,可以直接把`MvCamera.h` 和 `MvCamera.cpp`这两个基于C++接口封装好的源码加入到自己的工程里来利用其提供的高级功能[^2]。 ```cpp #include "MvCamera.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); // 初始化相机对象实例化 CMvCamera m_camera; // 执行初始化、打开设备等动作... } ``` #### 实现异常处理机制 针对可能出现的各种意外状况(比如网络摄像机掉线),可以通过注册回调函数的方式捕获这些事件,并据此采取相应措施通知用户或执行恢复尝试[^3]。 ```cpp void ExceptionCallBack(unsigned int nMsgType, void* pUser) { if (nMsgType == MV_EXCEPTION_DEV_DISCONNECT) { MainWindow* camera = static_cast<MainWindow*>(pUser); camera->setLastErrorMsg(tr("Error: Camera disconnected")); } } // 注册上述回调方法 m_camera.SetExceptionCallback(ExceptionCallBack, this); ``` 以上就是使用Qt框架配合海康新版SDK完成基本应用构建的主要步骤和技术要点概述。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值