基于QT的海康威视相机二次开发

工程链接:

        链接:https://pan.baidu.com/s/1SZFH9F8oVYtAEp8NQDGoRA?pwd=6pep 
提取码:6pep

        注意将MVS目录下的Development下的include和libraries文件复制粘贴以后替换该工程下的同名文件

  1. 工程的总体构成介绍

图1  工程构成

如图一所示,主要由三个类来实现完整的功能,分别是mycamera,thread,widget类,mycamera类主要实现海康威视摄像头的打开,读取一帧图像,获取摄像头参数,关闭设备的功能,负责最初始的采集图像。Thread类主要是实现多线程抓取图像的功能。而widget类主要涉及到很多信号与槽函数的实现,其功能如图二和图三。

图一

                                    图二                                                                                图三

这些函数目的是要实现一下ui界面的功能。(如图四)

(图四)

2.功能效果演示

2.1打开摄像头

2.2获取摄像头截图

2.3开始标定

2.4矫正图像

2.5测量面积

6

2.6测量周长

3功能函数原理解析

3.1打开摄像头

       //打开摄像头

    connect(ui->btnOpencamera,&QPushButton::clicked,this,&Widget::on_opencamera_clicked);

       先列举电脑上的USB设备,结合MVS的库文件函数,即封装在mycamera类中的EnumDevices函数可以搜寻到MVS海康威视相机。然后创建mycamera类,调用其中封装的打开摄像机函数,若打开成功则m_bOpenDevice设为true且检测到的摄像头指不设为空指针,这两个标识主要用于后期截取摄像头图片时的启动条件。此时由于截取图像和打开摄像头都需要显示图片,所以这里又设置了一个connect,将其连接到显示QImage图像函数slotDisImg,其中涉及到将opencv图像转换为QImage图像,并显示到label中。

3.2截取摄像头图片

       //保存截图

connect(ui->btnsaveImg,&QPushButton::clicked,this,&Widget::slotBtnsaveImg);

若点击获取截图按钮,则将m_saveImage保存表示设位真,并利用QFileDialog::getSaveFileName句柄可选择路径保存图片。

3.3开始标定

       //点击“开始检测”,显示角点的亚像素

connect(ui->btnStartDetect,&QPushButton::clicked,this,&Widget::slotBtnStartDetect);

先将图像转为灰度图,然后寻找角点,再然后便利寻找到的角点并画圆以显示角点。

3.4矫正图片

       //显示校正后的结果

connect(ui->btnShowResult,&QPushButton::clicked,this,&Widget::slotBtnShowResult);

下图是

先用matlab标定以后得到相机参数和畸变系数,然后手动输入相机参数和畸变系数,用opencv中的undistort矫正图片(图五是用matlab标定相机以后导出的.xml文件图片)。由于矫正的图像是极有价值的,所以这里默认保存矫正后的图片,有QT中自带的句柄选择矫正图片的保存路径。

             

3.5测量面积

           //检测面积

    connect(ui->btnArea,&QPushButton::clicked,this,&Widget::slotBtnArea);

       先对图像进行预处理,预处理如下:高斯滤波进行降噪,然后对图像进行二值化,在对图像进行形态学操作以后,使用阈值分割,再使用findContours找到轮廓,然后对轮廓求面积,其中要遍历所有轮廓,找到最大轮廓的面积。

3.6测量周长

           //检测周长

    connect(ui->btnPerimeter,&QPushButton::clicked,this,&Widget::slotBtnPerimeter);

       操作步骤如5.5一致,只是计算轮廓周长和计算轮廓面积的函数不同罢了。

3.7关闭摄像头

           //关闭摄像头

connect(ui->btnCloseCamera,&QPushButton::clicked,this,&Widget::on_closecamera_clicked);

主要是调用mycamera类中关闭相机的函数,再将打开摄像头时的m_pMvCamera设为空指针,将m_bOpenDevice设为false,这两步主要是为下一次开启摄像头做准备.

4

.关键函数一览

### 回答1: Java是一种广泛应用的编程语言,而海康威视是一家知名的视听设备生产厂商,其提供的SDK包含了海康威视所生产的视频监控设备通信协议以及数据处理方案。基于海康威视SDK进行Java的二次开发可以使开发者在海康威视设备的基础上构建出更加灵活、高效的应用程序,提高了开发效率和安全性。 使用Java的特性来实现对海康威视设备的二次开发,主要包括以下几个方面: 1. 处理设备的通信协议:使用Java的网络编程技术,基于海康威视SDK中所提供的设备通信协议进行二次开发,可以实现设备之间的数据交互。 2. 实现设备数据的解析:使用Java的数据处理技术,对从设备中获取的数据进行解析和处理,将数据转换成开发者想要的格式,以便进行进一步的数据处理。 3. 开发可视化界面:通过Java的图形用户界面(GUI)开发技术,基于海康威视SDK提供的数据处理方案,开发出用户友好的界面,实现对设备的远程控制和监控。 通过基于海康威视SDK进行Java的二次开发,开发者可以轻松地实现对海康威视设备的控制和监控,从而扩展了设备的功能和优化了用户体验。 ### 回答2: Java语言是当前应用非常广泛的编程语言之一,而海康威视则是国内领先的视频监控设备和解决方案的供应商之一,其SDK(软件开发工具包)提供了视频监控设备接口、流媒体接口等丰富的接口,使得设备厂商和软件开发者可以基于这些接口进行二次开发,实现更加专业化和个性化的应用。 如何通过Java语言来实现基于海康威视SDK的二次开发呢?首先我们需要在Java开发环境中添加海康威视SDK的jar包,然后根据SDK提供的接口进行编程。一般来说,SDK的使用大致可以分为以下几个步骤: 1. 初始化SDK环境:调用SDK提供的初始化接口完成SDK环境的初始化工作,包括设备搜索、连接、登录等工作。此外,还可以设置获取日志信息、设置报警回调等操作。 2. 获取设备信息:通过SDK提供的接口,可以获取监控设备的相关信息,包括设备类型、通道数、分辨率、帧率等,这些信息可以用于后续的开发工作。 3. 获取实时视频流:通过SDK提供的接口,可以获取监控设备传输的视频流数据,包括码流类型、码率、分辨率等,将视频数据解码后可以进行实时展示或者录制等操作。 4. 控制设备操作:通过SDK提供的接口,可以对监控设备进行各种控制操作,包括云台控制、预置点设置、图像参数调节等。 以上是基于海康威视SDK进行Java开发的一些常用操作,具体实现方式还需要根据不同的业务需求进行具体的编码工作。在实际开发过程中,我们还需要根据SDK提供的文档和示例代码进行参考和学习,以便更好地掌握SDK的使用技巧和开发经验。同时,我们还需要考虑安全、稳定性等因素,在保证功能实现的前提下,尽可能地减少软件系统的风险和漏洞。 ### 回答3: Java 是一种广泛使用的编程语言,在现代软件开发中非常流行。而海康威视是一家全球领先的视频监控解决方案提供商,其SDK具有一定的开放性和可定制性,可以用于二次开发。因此,Java 基于海康威视的SDK实现二次开发是可行的。 首先,使用Java开发需要具备基本的Java编程知识、IDE开发环境和海康威视SDK技术文档。开发者可以通过访问海康威视的开发者网站,获取SDK的开发包和相关说明文档,从而开始二次开发。 其次,海康威视SDK提供了丰富的接口和工具,便于Java开发者调用和使用。通过SDK中提供的API,我们可以实现视频监控的实时预览、录像回放、设备管理等功能。同时,SDK还提供了多种编程语言和操作系统的支持,使得Java程序可以在不同平台上进行开发和运行。 最后,Java开发者可以结合SDK提供的示例代码和测试工具,对开发的程序进行测试和调试,确保其功能和性能能够满足要求。同时,Java开发者还应该遵循海康威视SDK的开发规范,尽可能地避免出现错误和异常。 总之,Java基于海康威视SDK实现二次开发是一项有挑战性的任务,需要具备Java编程技能和视频监控领域的相关经验。但是,通过充分利用SDK的开放性和可定制性,开发者可以实现更加灵活和高效的视频监控解决方案,为客户提供更好的用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_58475035

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值