• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签: opencv  

资源简介

使用opencv调用海康威视网络摄像头

资源截图

代码片段和文件信息

#include 
#include 
#include 
#include “Windows.h“
#include “HCNetSDK.h“
#include “plaympeg4.h“
#include 
#include 

using namespace std;
using namespace cv;

LONG nPort = -1;

volatile int gbHandling = 3;

//解码回调 视频为YUV数据(YV12),音频为PCM数据
void CALLBACK DecCBFun(long nPort char * pBuf long nSize frame_INFO * pframeInfo long nReserved1 long nReserved2)
{
if (gbHandling)
{
gbHandling--;
return;
}

long lframeType = pframeInfo->nType;
if (lframeType == T_YV12)
{

Mat pImg(pframeInfo->nHeight pframeInfo->nWidth CV_8UC3);
Mat src(pframeInfo->nHeight + pframeInfo->nHeight / 2 pframeInfo->nWidth CV_8UC1 pBuf);
cvtColor(src pImg CV_YUV2BGR_YV12);
// Sleep(-1);
imshow(“IPCamera“ pImg);
waitKey(1);

}

gbHandling = 3;

}


///实时流回调
void CALLBACK fRealDataCallBack(LONG lRealHandle DWORD dwDataType BYTE *pBuffer DWORD dwBufSize void *pUser)
{

switch (dwDataType)
{
case NET_DVR_SYSHEAD: //系统头

if (!PlayM4_GetPort(&nPort))  //获取播放库未使用的通道号
{
break;
}
//m_iPort = lPort; //第一次回调的是系统头,将获取的播放库port号赋值给全局port,下次回调数据时即使用此port号播放
if (dwBufSize > 0)
{
if (!PlayM4_SetStreamOpenMode(nPort STREAME_REALTIME))  //设置实时流播放模式
{
break;
}

if (!PlayM4_OpenStream(nPort pBuffer dwBufSize 10 * 1024 * 1024)) //打开流接口
{
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))
{
cout << “error“ << PlayM4_GetLastError(nPort) << endl;
break;
}
}
break;
default: //其他数据
if (dwBufSize > 0 && nPort != -1)
{
if (!PlayM4_InputData(nPort pBuffer dwBufSize))
{
break;
}
}
break;
}
}


void 

评论

共有 条评论