暂时使用到的主要功能有四个:1.连接相机,2.实时显示,3.取图(bmp格式),4.关闭相机

在官网下载对应的win64的SDK,在库文件中运行demo.exe确保硬件连接正常。
在程序中导入库

1. 连接相机

使用到的主要SDK接口:NET_DVR_Init(初始化SDK),NET_DVR_Login(用户登录)

    //连接相机,连接成功返回userID,返回-1为初始化SDK失败,返回-2为登录失败Q_INVOKABLE int camera_Connect(QString ip, int port = 8000, QString name = "admin", QString password = "*****");private:Ui::MainWidget *ui;int m_userID=-10;             //记录连接是否成功,成功则返回正确IDbool m_Connect = false;LONG m_IRealPlayHandle=-100;    //记录显示是否成功,成功则返回正确句柄

int MainWidget::camera_Connect(QString ip, int port, QString name, QString password)
{//QString 转 char * // ip name passwordchar* ch_ip;char* ch_name;char* ch_password;QByteArray ba_ip = ip.toLatin1();QByteArray ba_name = name.toLatin1();QByteArray ba_password = password.toLatin1();ch_ip = ba_ip.data();ch_name = ba_name.data();ch_password = ba_password.data();//初始化SDKbool isok = NET_DVR_Init();if (isok == false){qDebug() << "NET_DVR_Init error;error number is " << NET_DVR_GetLastError();return -1;}//设置连接时间与重连时间NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(10000, true);NET_DVR_DEVICEINFO DeviceInfoTmp;   //设备信息long userID = NET_DVR_Login(ch_ip, port, ch_name, ch_password, &DeviceInfoTmp);//long userID = NET_DVR_Login("192.168.1.64", 8000, "admin", "a12345678", &DeviceInfoTmp);if (userID < 0){qDebug() << "NET_DVR_Login error;" << "error number is " << NET_DVR_GetLastError();return -2;}qDebug() << "Login userID:" << userID;m_Connect = true;m_userID = userID;return userID;
}

2. 实时显示

需要调用实时显示之后,后续才能保存图片成功
使用到的主要的SDK接口:NET_DVR_RealPlay_V40

public://实时显示(需要先显示才能存图)Q_INVOKABLE bool camera_DisPlayCapture();
private://实时显示在控件上(hWnd传入控件ID)long display_pic(long userID, HWND hWnd, NET_DVR_PREVIEWINFO struPlayInfo);
bool MainWidget::camera_DisPlayCapture()
{if (m_userID >= 0){HWND hWnd = (HWND)ui->label->winId();    //成功时,即可实时显示在该label上NET_DVR_PREVIEWINFO struPlayInfo = { 0 };   //初始化//此为登录时返回的IDlong userID = m_userID;long IRealPlayHandle = display_pic(userID, hWnd, struPlayInfo);qDebug() << "camera_DisPlayCapture:IRealPlayHandle=" << IRealPlayHandle;m_IRealPlayHandle = IRealPlayHandle;return true;}else{qDebug() << ("HKCAMERA->camera_DisPlayCapture:m_userID < 0,not Connect");return false;}
}long MainWidget::display_pic(long userID, HWND hWnd, NET_DVR_PREVIEWINFO struPlayInfo)
{struPlayInfo = { 0 };struPlayInfo.hPlayWnd = hWnd;//需要 SDK 解码时句柄设为有效值,仅取流不解码时可设为空struPlayInfo.lChannel = 1;//预览通道号struPlayInfo.dwStreamType = 0;//码流类型:0-主码流,1-子码流,2-三码流,3-虚拟码流,以此类推struPlayInfo.dwLinkMode = 0;//0- TCP 方式,1- UDP 方式,2- 多播方式,3- RTP 方式,4-RTP/RTSP,5-RSTP/HTTPstruPlayInfo.bBlocked = 1;//0- 非阻塞取流,1- 阻塞取流long IRealPlayHandle = NET_DVR_RealPlay_V40(userID, &struPlayInfo, NULL, NULL);if (IRealPlayHandle < 0){qDebug()  << "NET_DVR_RealPlay_V40 error;error number " << NET_DVR_GetLastError();NET_DVR_Logout(userID);return 0;}elsereturn IRealPlayHandle;
}

3. 取图(bmp格式)

使用到的SDK接口:NET_DVR_CapturePicture

    //保存图片:第二个参数是显示时返回的m_IRealPlayHandle(也可能是连接时返回的m_userID,测试时这两个值都可行)Q_INVOKABLE bool camera_SavePicture(QString filename, int IrealHandl);

bool MainWidget::camera_SavePicture(QString filename, int IrealHandl)
{if (!m_Connect)return false;if (m_IRealPlayHandle < 0)return false;QString capImagePath = filename;QDir m_capImagePath(capImagePath);if (m_capImagePath.exists())QFile::remove(capImagePath);char* ch_filename;QByteArray ba_filename = filename.toLatin1();ch_filename = ba_filename.data();bool pic_status = NET_DVR_CapturePicture(IrealHandl, ch_filename);if (pic_status){qDebug() << "camera_SavePicture save pic :" << filename << "success";}else{qDebug() << "camera_SavePicture save pic :" << filename << "false";}return pic_status;
}

4. 关闭相机

使用到的SDK的接口:NET_DVR_Logout,NET_DVR_Cleanup

bool MainWidget::camera_Disconnect()
{m_Connect = false;bool status1 = NET_DVR_Logout(m_userID);bool status2 = NET_DVR_Cleanup();return status1&& status2;
}

借鉴博客:源博客链接,借鉴此博客完成连接和实时显示的功能。

海康威视网络摄像头SDK二次开发(QT版本)相关推荐

  1. 海康威视网络摄像机 SDK二次开发(JAVA)

    1.下载地址 https://www.hikvision.com/cn/download_more_406.html#prettyPhoto 根据各自情况,选择win32或者win64位 64位下载之 ...

  2. 基于Qt的海康威视网络摄像头SDK的二次开发

    最近用Qt做了一个基于海康威视网络摄像头SDK的二次开发,效果还不错.文章最后将开发的资料和demo软件通过链接方式分享,有兴趣的可以看下效果. 开发情况介绍: qt版本:Qt5.14.2 海康SDK ...

  3. 基于Qt的海康威视网络摄像头SDK的二次开发——摄像头登录和预览

    海康威视网络摄像头SDK的二次开发,需要摄像头IP地址,与主机的IP地址在同一网段,能够ping通摄像头IP,才能登录成功.摄像头是有账户名和密码,这需要记住,在开发的时候需要用到. 在开发前可以先用 ...

  4. (202103更新)海康威视网络摄像头sdk python版 (报错排查) 移动物体检测 多通道海康威视网洛摄像头后台检测 海康威视网络摄像头Python SDK

    海康威视网络摄像头Python SDK+移动物体位置检测 文末附 海康威视网络摄像头Python SDK 下载链接 本文参考博客 https://blog.csdn.net/c20081052/art ...

  5. Linux下海康威视工业相机的SDK二次开发

    1.客户端软件MVS的安装 1.1安装包的下载和解压 去 官网 下载两个软件安装,分别是客户端和开发环境.(这里我们下载V2.1.1(Linux)和Runtime组件包(Linux)): 工业相机文档 ...

  6. 大华SDK+JAVA+4g网络摄像头进行二次开发

    前言 监控,相信大家都不陌生.现在的监控技术发展迅速,国内以海康威视为首的智能视频监控提供商也层出不穷.现在,这些提供商都已经提供了相应的SDK以及API接口,能够很好的支撑我们进行摄像机的二次开发工 ...

  7. 海康威视网络摄像头sdk的开发(Demo的使用)指南

    如果您是想实现海康sdk包的Demo实例中MFC的分功能,那么请慢慢看,这篇文章百分之九十九可以帮你实现. 提醒:内容来自网络和自己实际操作,如有问题请联系hww168@yeah.net 首先,我们去 ...

  8. win10系统海康威视SDK二次开发Qt环境配置

    先下载海康SDK 我下载的win64版本: 海康SDK官网下载 解压后得到库文件和头文件 头文件 库文件 新建QWidget项目,选择64位的kits工具,在pro目录新建include文件夹和lib ...

  9. python海康威视网络摄像头_OpenCV:非海康威视大华宇视(其他)网络摄像头IPC 二次开发(Python)获取视频图像...

    # -*- coding: UTF-8 -*- # ! /usr/bin/python import cv2 # 参数 # -------------------------------------- ...

最新文章

  1. WindML相关知识和图形设备驱动程序开发(一)
  2. UVa573 The Snail
  3. Scalaz(44)- concurrency :scalaz Future,尚不完整的多线程类型
  4. ITK:创建前向差异内核
  5. jdk8中对HashMap做了哪些改变?
  6. zabbix邮件告警
  7. [css] 为什么说css的选择器一般不要超过三级?
  8. 家人重病什么心情都没了
  9. Python 学习笔记【12】字典
  10. 405.数字转换为十六进制数
  11. noip2013提高组初赛(答案+选择题题目+个人分析)
  12. java识别验证码图片_Java识别图像、验证码
  13. php5市场占有率,javascript,php_目前国内浏览器的市场占有率?,javascript,php,html,html5,css - phpStudy...
  14. 在centos中安装qq音乐
  15. stm32头文件学习之Core_cm3.c(h)
  16. Shell脚本常见问题
  17. 医疗大数据平台的建设思考
  18. 如何查看三菱PLC生产日期与版本信息?
  19. 华为OD机试 - 士兵过河
  20. 31游戏。(Geoffrey Mott-Smith(1954)) 分析

热门文章

  1. 牛客题目——最长公共子串、最长回文子串、兑换零钱
  2. 在Ubuntu18.04上搭建netopeer2环境
  3. 无人机在道路桥梁病害检测中的应用
  4. 晶闸管整流器——直流电动及系统的工作原理及调速特性
  5. APS.NET_MVC5学习笔记-验证编辑方法(Edit method)和编辑视图(Edit view)
  6. Windows: 如何配置IPv6隧道
  7. oracle wrapped原理,oracle 加密存储过程create_wrapped
  8. 图像--摄像头数据输出格式与传输接口
  9. 移动硬盘进水丢失数据怎么恢复
  10. E2E 端到端测试学习 - E2E 介绍、Cypress 案例基本使用