qq名片赞免费平台_全网最低价qq空间业务网站

自助下单地址(拼多多砍价,ks/qq/dy赞等业务):点我进入

文章目录

一、海康威视监控摄像头开发SDK介绍

设备网络SDK是基于设备的私网通信合约开发的。 是嵌入式网络硬盘录像机、NVR、网络摄像机、网络球摄像机、视频服务器、解码器、报警主机、网络存储等产品的配套模块。 用于远程访问和控制设备软件的二次开发。 图像预览、文件回放下载、云台控制、布撤防、语音对讲、日志管理、解码卡、远程升级、远程重启/关机、格式化硬盘、参数配置(系统配置、通道配置、串口配置、报警配置、用户配置)、多通道解码器、智能设备功能和采集设备能力集等。

海康威视SDK下载地址:

2.海康SDK模块说明

Windows下的设备网络SDK:

qq名片赞免费平台_全网最低价qq空间业务网站

Linux下设备网络SDK库:

设备网络SDK开发包包含以上组件。 必须加载 HCNetSDK.dll 和 HCCore.dll。 对于其他组件,用户可以根据需要选择其中的部分或全部。 下面将分别对SDK中各个组件的功能和使用情况进行说明。

3. Qt工程中海康威视SDK配置

将下载的SDK压缩包解压海康硬盘录像机录像的格式,将SDK解压包中的文件(库文件->include)(头文件->lib)复制到新建的文件夹中

将lib文件夹路径添加到系统环境变量中

在Qt工程中的CMakeList.txt中添加如下代码,即可完成海康威视的SDK导出

# HKVISION
set(HKVISION_DIR "C:\Program Files\HKVISION")
set(HKVISION_INCLUDE_DIR "C:\Program Files\HKVISION\include")
set(HKVISION_LIB_DIRS "C:\Program Files\HKVISION\lib")
include_directories(${HKVISION_INCLUDE_DIR})
link_directories(${HKVISION_LIB_DIRS})
target_link_libraries(${PROJECT_NAME} PUBLIC HCNetSDK PlayCtrl)

4.实时预览摄像头图像程序

海康威视官方实时预览节目流程:

qq名片赞免费平台_全网最低价qq空间业务网站

一、初始化海康的SDK

// 1.初始化海康监控SDK
NET_DVR_Init(); 

然后海康硬盘录像机录像的格式,创建一个包含摄像头IP等信息的NET_DVR_USER_LOGIN_INFO结构和一个NET_DVR_DEVICEINFO_V40 SLR信息结构。 NET_DVR_USER_LOGIN_INFO结构体包含了登录SLR时需要提供的必要信息,如用户名、密码等。 单反的基本信息。

// 2.设置连接相机的信息,用户注册设备
NET_DVR_USER_LOGIN_INFO struLoginInfo = {0}; //包含相机参数的结构体
NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = {0}; //登录后的相机信息
struLoginInfo.bUseAsynLogin = 0; //同步登录方式
strcpy_s(struLoginInfo.sDeviceAddress, "192.168.1.71"); //设备IP地址
struLoginInfo.wPort = 8000; //设备服务端口
strcpy_s(struLoginInfo.sUserName, "admin"); //设备登录用户名
strcpy_s(struLoginInfo.sPassword, "1234"); //设备登录密码
NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40); //设备登录

NET_DVR_Login_V40()函数说明:

NET_DVR_USER_LOGIN_INFO结构说明:

qq名片赞免费平台_全网最低价qq空间业务网站

相机登录成功后,我们就可以开始单反的实时预览了。 实时预览有两种形式,一种是直接给一个窗口ID(HWND),SDK会手动在控件上显示图片,另一种是给一个回调函数,SDK会返回图片数据传给回调函数,用户可以决定如何处理图像数据。 这里只介绍第一种方法,回调函数的形式可以参考海康SDK文档。 无论使用哪种方式,都需要提供NET_DVR_PREVIEWINFO结构体,其中包含SDK如何处理流的信息。

//通过给控件的HWDN,SDK自行进行图像的显示
// 3.启动预览
LONG lUserID = -1; //注册设备ID
LONG lRealPlayHandle = -1; //实时预览控制端口
NET_DVR_PREVIEWINFO struPlayInfo; //实时显示参数设定
struPlayInfo.hPlayWnd = hPlayWnd; //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空, Qt中可以通过(HWND)ui->srcImg->winId()获取控件HWND
struPlayInfo.lChannel = 1; //预览通道号
struPlayInfo.dwStreamType = 0; //0-主码流,1-子码流,2-码流3,3-码流4,以此类推
struPlayInfo.dwLinkMode = 0; //0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTP
struPlayInfo.bBlocked = 0; //0- 非阻塞取流,1- 阻塞取流
NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, NULL, NULL);

NET_DVR_RealPlay_V40函数说明:

NET_DVR_PREVIEWINFO结构说明:

qq名片赞免费平台_全网最低价qq空间业务网站

4. 设置NET_DVR_RealPlay_V40()后,SDK会手动将图像流显示给绑定的控件。 如果需要从流中获取一帧图像,可以通过NET_DVR_CapturePictureBlock_New()函数获取。

std::vector<char> inputData(3840*2160*4 + 54); //创建一个数组,大小为图像的H*W*4 + 54,用来保存图像数据
DWORD size= 0; //返回的实际图像大小
DWORD* psize = &size;  //指向实际图像大小的指针
NET_DVR_CapturePictureBlock_New(lRealPlayHandle, inputData.data(), (DWORD)inputData.size(), psize) //通过这个函数获取一帧图像数据
cv::_InputArray pic_arr(inputData); //将图像数据转换为OpenCV的数组
Mat grabImg = cv::imdecode(pic_arr, cv::IMREAD_COLOR); //OpenCV数组转换为Mat对象
//通过以下代码,把opencv的Mat转换为QImage,然后在Qt的QLabel控件上进行显示
QImage qgrabImg = QImage((const unsigned char*)(grabImg.data), grabImg.cols, grabImg.rows, grabImg.cols*grabImg.channels(), QImage::Format_RGB888);   // Mat为BGR颜色模式;
qgrabImg = qgrabImg.rgbSwapped();
ui->grabImg->setPixmap(QPixmap::fromImage(qgrabImg));

实际Qt程序运行效能

程序源码下载地址

地址:

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

悟空资源网 网站程序 qq名片赞免费平台_全网最低价qq空间业务网站 https://www.wkzy.net/game/45593.html

常见问题

相关文章

官方客服团队

为您解决烦忧 - 24小时在线 专业服务