海康威视SDK + OpenCV+C++ 开发流程
-
下载安装海康威视SDK
-
集成SDK到C++项目中,包括头文件和库文件的添加
-
创建摄像头对象并连接摄像头,获取视频流
-
使用OpenCV读取视频流并处理图像,如图像增强、特征提取、目标跟踪等
-
将处理后的图像进行展示或保存
-
释放资源,关闭摄像头连接
示例代码:
#include <iostream>
#include <opencv2/opencv.hpp>
#include "HCNetSDK.h"
using namespace std;
using namespace cv;
int main()
{
// 初始化海康威视SDK
NET_DVR_Init();
// 登录设备
NET_DVR_DEVICEINFO_V30 device_info;
LONG user_id = NET_DVR_Login_V30("192.168.1.100", 8000, "admin", "123456", &device_info);
if (user_id < 0) {
cout << "Login failed." << endl;
NET_DVR_Cleanup();
return -1;
}
// 获取通道号
int channel_num = 1;
NET_DVR_IPPARACFG_V40 ip_para_cfg_v40 = { 0 };
DWORD bytes_returned = 0;
if (!NET_DVR_GetDVRConfig(user_id, NET_DVR_GET_IPPARACFG_V40, 0, &ip_para_cfg_v40, sizeof(ip_para_cfg_v40), &bytes_returned)) {
cout << "NET_DVR_GetDVRConfig failed." << endl;
NET_DVR_Logout(user_id);
NET_DVR_Cleanup();
return -1;
}
channel_num = ip_para_cfg_v40.dwAChanNum + ip_para_cfg_v40.dwDChanNum;
// 开启预览
NET_DVR_PREVIEWINFO preview_info = { 0 };
preview_info.hPlayWnd = NULL;
preview_info.lChannel = 1;
preview_info.dwStreamType = 0; // 0-主码流,1-子码流,2-码流3,3-码流4,以此类推
preview_info.dwLinkMode = 0; // 0-UDP方式,1-TCP方式,2-MCAST方式,3-RTP方式,4-RTP/RTSP,5-RSTP/HTTP
preview_info.bBlocked = true; // 同步播放
LONG preview_handle = NET_DVR_RealPlay_V40(user_id, &preview_info, NULL, NULL);
// 创建窗口
namedWindow("preview", WINDOW_NORMAL);
// 读取视频流并处理图像
Mat frame;
while (true) {
// 读取视频帧
if (!NET_DVR_GetRealPlayerIndex(preview_handle)) { // 预览结束
break;
}
if (!NET_DVR_CapturePicture(preview_handle, "snapshot.jpg")) { // 截图
cout << "NET_DVR_CapturePicture failed." << endl;
break;
}
frame = imread("snapshot.jpg", IMREAD_COLOR);
// 处理图像
cvtColor(frame, frame, COLOR_BGR2GRAY);
GaussianBlur(frame, frame, Size(7, 7), 0, 0);
Canny(frame, frame, 50, 150);
// 显示图像
imshow("preview", frame);
if (waitKey(1) == 27) { // ESC键退出
break;
}
}
// 释放资源
NET_DVR_StopRealPlay(preview_handle);
NET_DVR_Logout(user_id);
NET_DVR_Cleanup();
destroyAllWindows();
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/fJ32 著作权归作者所有。请勿转载和采集!