怎么用C++和opencv开发海康相机录取视频

时间: 2024-01-24 21:17:24 浏览: 33
下面是一个简单的示例代码,使用C++和OpenCV库来连接海康相机并录制视频: ```c++ #include <iostream> #include <opencv2/opencv.hpp> #include <Windows.h> #include "HCNetSDK.h" using namespace std; using namespace cv; void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser); int main() { // 初始化海康SDK NET_DVR_Init(); // 设置连接时间与重连时间 NET_DVR_SetConnectTime(2000, 1); NET_DVR_SetReconnect(10000, true); // 登录设备 NET_DVR_USER_LOGIN_INFO struLoginInfo = { 0 }; struLoginInfo.bUseAsynLogin = 0; strcpy_s(struLoginInfo.sDeviceAddress, "192.168.1.1"); // 设备IP地址 struLoginInfo.wPort = 8000; // 设备服务端口号 strcpy_s(struLoginInfo.sUserName, "admin"); // 登录用户名 strcpy_s(struLoginInfo.sPassword, "123456"); // 登录密码 NET_DVR_DEVICEINFO_V40 struDeviceInfoV40 = { 0 }; LONG lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfoV40); if (lUserID < 0) { printf("Login failed, error code: %d\n", NET_DVR_GetLastError()); return -1; } // 预览设置 NET_DVR_PREVIEWINFO struPlayInfo = { 0 }; struPlayInfo.hPlayWnd = NULL; struPlayInfo.lChannel = 1; // 预览通道号 struPlayInfo.dwStreamType = 0; // 码流类型,0-主码流,1-子码流,2-码流3,3-码流4,以此类推 struPlayInfo.dwLinkMode = 0; // 播放模式,0-非阻塞,1-阻塞 struPlayInfo.bBlocked = true; // 是否阻塞取流 // 开始预览 LONG lRealPlayHandle = NET_DVR_RealPlay_V40(lUserID, &struPlayInfo, g_RealDataCallBack_V30, NULL); if (lRealPlayHandle < 0) { printf("Preview failed, error code: %d\n", NET_DVR_GetLastError()); NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return -1; } // 创建OpenCV视频编码器 Size frameSize(struDeviceInfoV40.struVodFormat.struResolution.byWidth, struDeviceInfoV40.struVodFormat.struResolution.byHeight); VideoWriter writer("output.avi", CV_FOURCC('X', 'V', 'I', 'D'), 30, frameSize); // 录制视频 while (true) { Sleep(100); if (GetAsyncKeyState(VK_ESCAPE) & 0x8000) break; } // 停止预览 NET_DVR_StopRealPlay(lRealPlayHandle); // 退出海康SDK NET_DVR_Logout(lUserID); NET_DVR_Cleanup(); return 0; } void CALLBACK g_RealDataCallBack_V30(LONG lRealHandle, DWORD dwDataType, BYTE *pBuffer, DWORD dwBufSize, void* pUser) { switch (dwDataType) { case NET_DVR_SYSHEAD: break; case NET_DVR_STREAMDATA: Mat frame(cv::Size(1920, 1080), CV_8UC3, pBuffer); cvtColor(frame, frame, COLOR_BGR2RGB); imshow("Preview", frame); writer.write(frame); waitKey(1); break; } } ``` 需要注意的是,这只是一个简单的示例代码,其中可能还有一些细节需要根据实际情况进行调整和修改。

相关推荐

最新推荐

recommend-type

opencv3/C++实现视频读取、视频写入

今天小编就为大家分享一篇opencv3/C++实现视频读取、视频写入,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

opencv3/C++ 将图片转换为视频的实例

今天小编就为大家分享一篇opencv3/C++ 将图片转换为视频的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

opencv3/C++ 使用Tracker实现简单目标跟踪

今天小编就为大家分享一篇opencv3/C++ 使用Tracker实现简单目标跟踪,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
recommend-type

python使用opencv按一定间隔截取视频帧

主要为大家详细介绍了python使用opencv按一定间隔截取视频帧,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

Java使用OpenCV3.2实现视频读取与播放

主要为大家详细介绍了Java使用OpenCV3.2实现视频读取与播放,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

解释minorization-maximization (MM) algorithm,并给出matlab代码编写的例子

Minorization-maximization (MM) algorithm是一种常用的优化算法,用于求解非凸问题或含有约束的优化问题。该算法的基本思想是通过构造一个凸下界函数来逼近原问题,然后通过求解凸下界函数的最优解来逼近原问题的最优解。具体步骤如下: 1. 初始化参数 $\theta_0$,设 $k=0$; 2. 构造一个凸下界函数 $Q(\theta|\theta_k)$,使其满足 $Q(\theta_k|\theta_k)=f(\theta_k)$; 3. 求解 $Q(\theta|\theta_k)$ 的最优值 $\theta_{k+1}=\arg\min_\theta Q(
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。