由于项目的需求,需要对海康摄像头进行取流操作。

#include <iostream>
#include <opencv2\opencv.hpp>
#include <HCNetSDK.h>
#include <plaympeg4.h>
using namespace std;
using namespace cv;LONG nPort = -1;
HWND hWnd = NULL;
Mat image;//解码回调 视频为YUV数据(YV12),音频为PCM数据
void CALLBACK DecCBFun(long nPort, char * pBuf, long nSize, FRAME_INFO * pFrameInfo, long nReserved1, long nReserved2)
{if (pFrameInfo->nType == T_YV12){if (image.empty()){image.create(pFrameInfo->nHeight, pFrameInfo->nWidth, CV_8UC3);}Mat YUVImage(pFrameInfo->nHeight + pFrameInfo->nHeight / 2, pFrameInfo->nWidth, CV_8UC1, (unsigned char*)pBuf);cvtColor(YUVImage, image, COLOR_YUV2BGR_YV12);resize(image, image, Size(1000, 600));imshow("view", image);waitKey(15);YUVImage.~Mat();}
}///实时流回调
void CALLBACK fRealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void *pUser)
{switch (dwDataType){case NET_DVR_SYSHEAD:    //系统头if (!PlayM4_GetPort(&nPort)) //获取播放库未使用的通道号{nPort = -1;break;}if (dwBufSize > 0){//实时流播放模式if (!PlayM4_SetStreamOpenMode(nPort, STREAME_REALTIME))break;//打开流接口if (!PlayM4_OpenStream(nPort, pBuffer, dwBufSize, 1024 * 1024 * 8))break;//播放开始if (!PlayM4_Play(nPort, NULL))break;//设置解码回调函数 仅仅解码不显示if (!PlayM4_SetDecCallBack(nPort, DecCBFun))break;}break;case NET_DVR_STREAMDATA:   //码流数据if (dwBufSize > 0 && nPort != -1){if (!PlayM4_InputData(nPort, pBuffer, dwBufSize))break;}break;}
}int main()
{/*设备SDK初始化*/NET_DVR_Init();NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(2000, true);NET_DVR_SetRecvTimeOut(5000);//---------------------------------------// 注册设备LONG lUserID;NET_DVR_DEVICEINFO_V30 struDeviceInfo;lUserID = NET_DVR_Login_V30("192.168.1.64", 8000, "admin", "123456", &struDeviceInfo);if (lUserID < 0){printf("Login error, %d\n", NET_DVR_GetLastError());NET_DVR_Cleanup();return -1;}printf("Login success!\n");//--------------------------------------long lRealPlayHandle;//HWND hWnd = GetConsoleWindow(); //获取窗口句柄NET_DVR_PREVIEWINFO struPlayInfo = { 0 };struPlayInfo.hPlayWnd = NULL; //需要 SDK 解码时句柄设为有效值,仅取流不解码时可为空(设置回调函数)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/HTTPstruPlayInfo.bBlocked = 0; //0- 非阻塞取流,1- 阻塞取流lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo,fRealDataCallBack_V30, NULL);if (lRealPlayHandle < 0) //预览失败{printf("NET_DVR_RealPlay_V40 error, %d\n", NET_DVR_GetLastError());NET_DVR_Logout(lUserID);NET_DVR_Cleanup();return-1;}Sleep(5000);//关闭预览NET_DVR_StopRealPlay(lRealPlayHandle);//注销用户NET_DVR_Logout(lUserID);//释放 SDK 资源NET_DVR_Cleanup();return 0;
}

海康摄像头opencv实时回调相关推荐

  1. 海康摄像头视频实时监控

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 海康摄像 ...

  2. 使用海康摄像头实现实时监控

    原文地址为: 使用海康摄像头实现实时监控 1.  基于RTSP协议的windows平台监控. 1.1 选取海康网络摄像头(支持RTSP,标准H.264 RTP封装的设备). 1.2. 按照摄像头的使用 ...

  3. 物联网平台 TCP/IP HTTP MQTT 通讯协议 支持海康摄像头 数据实时采集和远程控制

    物联网平台源码 TCP/IP HTTP MQTT 通讯协议 支持海康摄像头 系统包括,后台服务,传感器解析服务.web展示,文档齐全. 目前web系统支持功能,: 数据实时采集和远程控制: 报警信息管 ...

  4. unity通过rtsp协议实现海康摄像头的实时连接(一)

    一.前一段时间实现了通过winform调取摄像头的实时监控运行程序,详见源码:https://download.csdn.net/download/lsc_hei/10652399 二.现在需求改变, ...

  5. 多路海康网络摄像头数据实时回调(采用软解码方式)

    由于项目中需要访问多路海康摄像头的原始图像进行相关处理,搜索了大量的博客,对于多路海康摄像头回调都没有写的很清楚明白,看到此博客的你,静下心来研读下面的内容,你将会很容易调取多路海康网络摄像头. (1 ...

  6. 海康摄像头实时显示与字符叠加详解

    1.说明 文章详细叙述了海康摄像头的两种实时显示方法--基于SDK 解码显示和基于数据流回调显示,并且讲述了这在两种显示方法下如何往画面添加字符和图像,最后比较了这两种方法的优劣.文章全程给以详细的程 ...

  7. 调用海康摄像头实时识别数字牌数字

    项目场景: 调用海康摄像头实时识别数字牌数字 前言 项目所需,调用网络摄像头来完成对一个数字牌的识别,用模板匹配的方法分离出数字 用VS2015+OPENCV3.4.3完成 一.调用摄像头 首先在VS ...

  8. 浏览器显示海康摄像头实时预览画面纯前端解决方案

    浏览器显示海康摄像头实时预览画面纯前端解决方案 将海康设备的 rtsp 协议视频流通过 ffmpeg 转码为 flv 实时视频流,并将实时视频流通过 express 服务生成 http 长链接或 ws ...

  9. 海康摄像头前端调用实时画面解决方案(无插件版开发)

    文章目录 前言 一.海康摄像头 二.尝试方案 1.方案1 2.方案2 3.方案3 总结 前言 项目中有一个需求,是需要把海康摄像机的实时画面在项目前端的页面中展示出来.本文的技术栈主要用到了vue3. ...

最新文章

  1. 漫画:前端发展史的江湖恩怨情仇
  2. android 关机充电流程
  3. aix pax_通过Pax考试对JBoss Fuse 6.x进行集成测试,第一部分
  4. html5页面主题,HTML5页面开发笔记
  5. oracle十进制函数语法,Oracle 十进制、二进制互相转换自定义函数
  6. 最速下降法和牛顿方法的Python实现和MATLAB实现
  7. 数百款惠普打印机易受严重RCE漏洞影响
  8. csharp:Compare two DataTables to rows in one but not the other
  9. Spring源码入门——AnnotationBeanNameGenerator解析
  10. 服务端设置忽略更新_深入理解Kafka服务端之日志对象的读写数据流程
  11. awl 多线程syn***
  12. 图像分类python代码_20行代码:Serverless架构下用Python轻松搞定图像分类
  13. 微信小程序学习笔记4
  14. python实现复联4影评数据词云可视化分析
  15. 读万卷书,行万里路,写万行Code
  16. 计算机死机代码怎么写,如何用代码让电脑死机
  17. 广东第一高中生_广东高中排行榜TOP10,有你的母校吗?
  18. 关于sp和unity近似的PBR的一篇国外文章
  19. 人工智能为什么要做全栈工程师
  20. ABB 120 六轴机械手臂编程调试(四) 三菱plc控制器配套程序

热门文章

  1. 在vue中禁止input框和textarea编辑的操作
  2. 大数据、java、python、区块链、人工智能发展前景
  3. oracle 的exp是什么,oracle中exp和imp是什么,oracle中exp和imp有何区别 | 学步园
  4. 单片机编程系列之分层设计2(怎样合理拆分子系统)
  5. 松下LUMIX S1相机断电MDT文件修复MP4视频(LPCM)
  6. 35+老测试员生涯回顾,揭秘无力吐槽的自动化真相…
  7. Unity + SteamVR + VIVE Pro进行动作捕捉
  8. [PYTHON]Scons工具简介
  9. 为什么现在的视频都会加入自动字幕功能?
  10. mipi传输距离3米_蓝牙网关有效传输距离是多少?