准备:VS2010,OpenCV2.4.7,海康威视网络PTZ摄像头,Win10操作系统。

一.摄像头的安装

1.按照说明书安装好摄像头,用网线连接在电脑上,配置电脑IP或者摄像头IP,保证摄像头和电脑在同一个网段,这时摄像头会提醒成功连接网络。

2.从海康威视官网上下载SADP并安装(这个版本的SADP我下载下来以后装上了却用不了,后来我就下了比这个低一个版本的,可以使用),按照说明书在SADP中激活摄像头即可,或者直接在浏览器中登入摄像头的IP中,进行操作也可以,我是用浏览器激活的。

配置结束,在界面中会提醒下载插件,

按照提示安装好插件,注意在安装插件时关掉浏览器。安装好插件以后重新登陆,就可以看到摄像头的画面了。

二.SDK环境配置配置

1.opencv的环境配置

这里和前面的opencv配置一致,提示:将需要用到的属性页单独建立出来,以后要用的时候可以直接添加进去。

2.海康威视SDK的配置

 (1)下载SDK

进入海康威视官网,下载SDK。切记:如果你的opencv用的是32位操作台,SDK要用32位的,我的电脑是64 位的,但是我的vs2010用的是32位,所以我用的海康威视SDK也是32位的。

2.将下载好的SDK里的“库文件”改名为“lib”,将“头文件”改名为“include”,在vs2010的属性里添加这个目录。

添加库文件:既要添加库文件lib也要把lib下的HCNetSDKCom文件包含进去。

添加依赖项:

GdiPlus.lib
HCCore.lib
HCNetSDK.LIB
PlayCtrl.lib
HCAlarm.lib
HCGeneralCfgMgr.lib
HCPreview.lib

3.环境变量配置

添加包含.dll文件的目录。

4.在网页里打开摄像头,运行一下代码:

#include "stdafx.h"
#include<cstdlib>
#include<cstring>
#include<iostream>
#include"Windows.h"
#include"HCNetSDK.h"
#include "plaympeg4.h"
#include <opencv2\opencv.hpp>
#include <time.h>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 CALLBACK g_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser){ char tempbuf[256] = { 0 };switch (dwType){case EXCEPTION_RECONNECT:    //预览时重连printf("----------reconnect--------%d\n", time(NULL));break;default:break;}
}void main(){   //---------------------------------------// 初始化NET_DVR_Init();//设置连接时间与重连时间NET_DVR_SetConnectTime(2000, 1);NET_DVR_SetReconnect(10000, true);//---------------------------------------// 注册设备LONG lUserID;NET_DVR_DEVICEINFO_V30 struDeviceInfo;lUserID = NET_DVR_Login_V30("192.168.1.64", 8000, "admin", "a123456789", &struDeviceInfo);if (lUserID < 0){printf("Login error, %d\n", NET_DVR_GetLastError());NET_DVR_Cleanup();return;}//---------------------------------------//设置异常消息回调函数NET_DVR_SetExceptionCallBack_V30(0,NULL,g_ExceptionCallBack,NULL); //---------------------------------------//启动预览并设置回调数据流LONG lRealPlayHandle;cvNamedWindow("Mywindow", 0);cvNamedWindow("IPCamera", 0);HWND  h = (HWND)cvGetWindowHandle("Mywindow");if (h == 0){ cout << "窗口创建失败" << endl; }NET_DVR_PREVIEWINFO struPlayInfo = { 0 };struPlayInfo.hPlayWnd = h;         //需要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/HTTPlRealPlayHandle=NET_DVR_RealPlay_V40(lUserID,&struPlayInfo,fRealDataCallBack,NULL);if (lRealPlayHandle < 0){printf("NET_DVR_RealPlay_V40 error\n");printf("%d\n", NET_DVR_GetLastError());NET_DVR_Logout(lUserID);NET_DVR_Cleanup();return;}waitKey();Sleep(-1);//---------------------------------------//关闭预览NET_DVR_StopRealPlay(lRealPlayHandle);//注销用户NET_DVR_Logout(lUserID);//释放SDK资源NET_DVR_Cleanup();return;
}

5.运行结果如下:

参考博客:

(1)OpenCV+海康威视摄像头的实时读取 http://blog.csdn.net/lonelyrains/article/details/50350052

(2)OpenCV+海康威视摄像头的实时读取  http://blog.csdn.net/bbzz2/article/details/53214579

(3)opencv读取海康威视摄像头http://blog.csdn.net/shakevincent/article/details/51490197

(4)海康威视摄像头的读取(vs2010+opencv2.4.9)http://blog.csdn.net/wangdeyu1994/article/details/76284087

OPENCV2.4.7+VS2010+海康威视摄像头相关推荐

  1. 海康威视摄像头的读取(vs2010+opencv2.4.9)

    使用opencv进行海康威视网络摄像头的读取. 感谢以下几位前辈总结的资料,本文是在此基础上进行整理的. OpenCV+海康威视摄像头的实时读取 VS2012项目中引入dll的方法 海康 预览组件加载 ...

  2. Vue+Video.js播放m3u8视频流(海康威视摄像头+RTMP服务+FFmpeg)

    场景 Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览: Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览_BADAO_LIUMANG_QIZHI的博客-CSDN博客 ...

  3. Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览

    场景 Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流: Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_BADAO_LIUMANG_ ...

  4. 树莓派网线直连海康威视摄像头

    树莓派网线直连海康威视摄像头 由于路由器网络原因,树莓派通过wifi获取摄像头图片偶尔会出错,通过网线直连应该会获得更加稳定的网络环境. 目的 树莓派通过网线与摄像头进行通信 电脑通过WiFi与摄像头 ...

  5. SpringBoot+海康威视摄像头实现在前端的预览

    文章目录 前言 摄像头预览 1.什么是rtsp 1.1 了解海康威视rtsp的url规范 1.2 下载(VLC media player)[VLC](https://www.videolan.org/ ...

  6. 读取海康威视摄像头实时显示视频流

    提示:文章用于学习记录 文章目录 前言 一.设置同一网段 二.密码重置 三.VLC 读取视频流 四.opencv 读取视频流 总结 前言 摄像头一般有网线和电源线两个接口,如下图所示, 用网线将摄像头 ...

  7. python接入萤石云HLS直播流(海康威视摄像头4g连接条件下)

    1.将插好4g流量卡海康威视摄像头添加到萤石云 下载注册并登陆萤石云,点击添加设备,输入摄像头后部的序列号以及验证码(已改过设备密码的填写密码). 获取HLS直播流地址 登陆萤石云开发平台(https ...

  8. 解决海康威视摄像头无法通过路由器远程访问的问题

    最近在做海康威视摄像头的二次开发,今天突然碰到了个问题.我访问摄像头的方式是,球机通过网线接路由器,电脑连这个路由器的WiFi,用SDK通过局域网访问.因为项目的需要,换了个华为5G CPE路由器,还 ...

  9. 云栖大会人脸识别闸机【技术亮点篇5】--人脸识别闸机采用海康威视摄像头

    艾力奋会展服务公司为云栖大会提供的人脸识别闸机,装有海康威视的摄像头. 海康威视拥有视音频编解码.视频图像处理.视音频数据存储等核心技术,针对公安.交通.司法.文教卫.金融.能源和智能楼宇等众多行业提 ...

  10. 海康威视摄像头 onvif 鉴权

    问题描述 在调试海康威视摄像头过程中,遇到无法鉴权成功的问题.同样的代码,其他的摄像头均能鉴权成功,而海康威视的摄像头却不能. 问题原因 其他的摄像头,网页登录用的用户名和密码与onvif鉴权用的用户 ...

最新文章

  1. Evernote相关技术介绍——mysql+lucene+tomcat
  2. 创建文件夹(如果已经存在就清空)python脚本
  3. valid floating point value什么意思_每个位置的球员,都在干些什么
  4. Windows和Linux下apache-artemis-2.10.0安装配置
  5. QT的QPen类的使用
  6. php静态变量的销毁
  7. unix/linux系统中文件分为哪些类型?,到底该如何理解 Unix/Linux 的文件系统?看这篇就知道了...
  8. dj鲜生-用户中心-历史购物
  9. 鸿蒙系统9月11号上市吗,9月11日鸿蒙系统2.0要搭载华为全家桶来了,你期待吗?...
  10. 【我的物联网成长记7】物联网主流通信协议解读【华为云分享】
  11. 比特币蒸发 1 万亿;中兴入局无人驾驶;特斯拉 Model 3 在华降价 | 极客头条
  12. mysql 数据导出语句_MySQL 数据导出
  13. python打印购物清单_实例9:用Python自动生成Excel档每日出货清单
  14. Simulink仿真---clark变换、反clark变换
  15. 小程序打通了用户到店的最后一步!
  16. Java学习笔记(六):Java泛型
  17. pscc改变图片字体大小
  18. 有关getAttribute()方法和setAttribute()方法的说明
  19. 7-24 到底是不是太胖了 (10分)
  20. 美国服务器如何抵御黑客攻击

热门文章

  1. 开发人员学习文档下载地址
  2. AI2021下载 Illtrator2021安装教程
  3. Z4使用简评,极影音是最大亮点,但整体依然很拉胯
  4. 2021年啤酒酿造行业发展研究报告
  5. Python福彩3D单选单复式排列计算器
  6. 史上最全的互联网思维精髓总结
  7. 虚幻引擎3的代码讲解
  8. 二进制转8421bcd码_绝对值编码器当中的格雷码
  9. 小米air2se耳机只有一边有声音怎么办_小米蓝牙耳机Air2 SE,169元是否值得购买?值...
  10. List转换成json类型以及对象转换成json类型