1. 下载安装海康威视SDK

  2. 集成SDK到C++项目中,包括头文件和库文件的添加

  3. 创建摄像头对象并连接摄像头,获取视频流

  4. 使用OpenCV读取视频流并处理图像,如图像增强、特征提取、目标跟踪等

  5. 将处理后的图像进行展示或保存

  6. 释放资源,关闭摄像头连接

示例代码:

#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;
}
``
海康威视SDK + OpenCV+C++ 开发流程

原文地址: https://www.cveoy.top/t/topic/fJ32 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录