海康摄像头opencv实时回调
由于项目的需求,需要对海康摄像头进行取流操作。
#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实时回调相关推荐
- 海康摄像头视频实时监控
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 海康摄像 ...
- 使用海康摄像头实现实时监控
原文地址为: 使用海康摄像头实现实时监控 1. 基于RTSP协议的windows平台监控. 1.1 选取海康网络摄像头(支持RTSP,标准H.264 RTP封装的设备). 1.2. 按照摄像头的使用 ...
- 物联网平台 TCP/IP HTTP MQTT 通讯协议 支持海康摄像头 数据实时采集和远程控制
物联网平台源码 TCP/IP HTTP MQTT 通讯协议 支持海康摄像头 系统包括,后台服务,传感器解析服务.web展示,文档齐全. 目前web系统支持功能,: 数据实时采集和远程控制: 报警信息管 ...
- unity通过rtsp协议实现海康摄像头的实时连接(一)
一.前一段时间实现了通过winform调取摄像头的实时监控运行程序,详见源码:https://download.csdn.net/download/lsc_hei/10652399 二.现在需求改变, ...
- 多路海康网络摄像头数据实时回调(采用软解码方式)
由于项目中需要访问多路海康摄像头的原始图像进行相关处理,搜索了大量的博客,对于多路海康摄像头回调都没有写的很清楚明白,看到此博客的你,静下心来研读下面的内容,你将会很容易调取多路海康网络摄像头. (1 ...
- 海康摄像头实时显示与字符叠加详解
1.说明 文章详细叙述了海康摄像头的两种实时显示方法--基于SDK 解码显示和基于数据流回调显示,并且讲述了这在两种显示方法下如何往画面添加字符和图像,最后比较了这两种方法的优劣.文章全程给以详细的程 ...
- 调用海康摄像头实时识别数字牌数字
项目场景: 调用海康摄像头实时识别数字牌数字 前言 项目所需,调用网络摄像头来完成对一个数字牌的识别,用模板匹配的方法分离出数字 用VS2015+OPENCV3.4.3完成 一.调用摄像头 首先在VS ...
- 浏览器显示海康摄像头实时预览画面纯前端解决方案
浏览器显示海康摄像头实时预览画面纯前端解决方案 将海康设备的 rtsp 协议视频流通过 ffmpeg 转码为 flv 实时视频流,并将实时视频流通过 express 服务生成 http 长链接或 ws ...
- 海康摄像头前端调用实时画面解决方案(无插件版开发)
文章目录 前言 一.海康摄像头 二.尝试方案 1.方案1 2.方案2 3.方案3 总结 前言 项目中有一个需求,是需要把海康摄像机的实时画面在项目前端的页面中展示出来.本文的技术栈主要用到了vue3. ...
最新文章
- 漫画:前端发展史的江湖恩怨情仇
- android 关机充电流程
- aix pax_通过Pax考试对JBoss Fuse 6.x进行集成测试,第一部分
- html5页面主题,HTML5页面开发笔记
- oracle十进制函数语法,Oracle 十进制、二进制互相转换自定义函数
- 最速下降法和牛顿方法的Python实现和MATLAB实现
- 数百款惠普打印机易受严重RCE漏洞影响
- csharp:Compare two DataTables to rows in one but not the other
- Spring源码入门——AnnotationBeanNameGenerator解析
- 服务端设置忽略更新_深入理解Kafka服务端之日志对象的读写数据流程
- awl 多线程syn***
- 图像分类python代码_20行代码:Serverless架构下用Python轻松搞定图像分类
- 微信小程序学习笔记4
- python实现复联4影评数据词云可视化分析
- 读万卷书,行万里路,写万行Code
- 计算机死机代码怎么写,如何用代码让电脑死机
- 广东第一高中生_广东高中排行榜TOP10,有你的母校吗?
- 关于sp和unity近似的PBR的一篇国外文章
- 人工智能为什么要做全栈工程师
- ABB 120 六轴机械手臂编程调试(四) 三菱plc控制器配套程序
热门文章
- 在vue中禁止input框和textarea编辑的操作
- 大数据、java、python、区块链、人工智能发展前景
- oracle 的exp是什么,oracle中exp和imp是什么,oracle中exp和imp有何区别 | 学步园
- 单片机编程系列之分层设计2(怎样合理拆分子系统)
- 松下LUMIX S1相机断电MDT文件修复MP4视频(LPCM)
- 35+老测试员生涯回顾,揭秘无力吐槽的自动化真相…
- Unity + SteamVR + VIVE Pro进行动作捕捉
- [PYTHON]Scons工具简介
- 为什么现在的视频都会加入自动字幕功能?
- mipi传输距离3米_蓝牙网关有效传输距离是多少?