当前位置: 首页 > news >正文

海康威视监控相机的SDK与opencv调用(非工业相机)

1.研究内容

本篇主要对海康威视的监控相机的SDK回调进行研究,并于opencv结合,保存图像,以供后续其他处理,开发语言为C++

2.步骤及方法

2.1 海康SDK介绍

海康SDK下载地址
根据自身编译环境,下载对应的SDK,需要注意的是,不要和工业相机SDK相混淆,工业相机好像是MVS是什么玩意儿,现在暂时没研究
在这里插入图片描述
SDK包的结构如下,包括需要的头文件和库目录,其中windows下还提供了Demo示例,开发文档是我们时常需要用到的,结构如下:
在这里插入图片描述
其中SDK编程指南是需要注意的一个地方,通常需要根据自己的相机型号选择对应的文件,有些相机型号可能不支持,比如我使用的DS-2CD7********,这款相机,就只支持IPC的,查看文档是否支持相机,可以打开文档,在SDK简介中查看:
在这里插入图片描述
SDK文件确定后可以开始后续的开发了

2.2 环境搭建

打开visual studio 2022,配置sdk环境,包括前面提到的库文件和头文件,其中用到了opencv,配置opencv的相关头文件和库文件:
在这里插入图片描述
在这里插入图片描述
配置方式不多说,也可以在VC++目录中添加
添加完成后,编写头文件,蒋需用到的库包含进来,包括opencv的和海康sdk的:
在这里插入图片描述
其中有一个PlayM4.h头文件,sdk里面是没有的,需要在示例文件中拷贝过来,opencv如果是编译成一个opencv_world的,直接配置上去就行了

2.3 相机配置

海康相机配置比较容易,初始的IP地址是192.168.1.64,可以根据实际使用情况,修改相机的IP,登录的用户名和密码,sdk调用的时候需要用到这3个信息。

2.4 SDK调用

SDK取流在文档的第4章《函数调用示例》中,直接复制,粘贴,修改好自己相机的IP,用户名和密码就可以正常调用起来了,主要分为以下几个部分:
(1)初始化
初始化,包括设备注册,设置连接时间和重连时间,设置异常回调函数等,其中最重要的是设置登录相机设备的IP地址,用户名和密码。
(2)调用相机
调用相机有多种方式,可以直接使用rtsp取流,也可以直接使用海康sdk提供的回调取流函数,这一部分需要参考sdk开发文档,不只是代码示例,还有sdk提供的其他函数,可参考5《函数说明》,例如,我需要拿到图像后和opencv结合,那么需要拿到图像的数据,就需要用到以下接口了:
在这里插入图片描述

3 图像保存

本篇主要解决的问题是,sdk拿到的图像通过opencv保存下来并且可以做其他操作,sdk中提供的参考示例用了一个Sleep函数,不是和符合我的要求,所以做了一些修改后面会提供整个代码工程,主要的改动如下:
参考的sdk:
在这里插入图片描述
修改的部分

//使用海康的SDK抓取图像HKSDK_LIB_API int __stdcall  playCapture(void* user,int count, Mat &save_image_l,Mat &save_image_r)
{//外部多线程使用LPMyStruct stru = (LPMyStruct)user;//启动预览并设置回调数据流NET_DVR_PREVIEWINFO struPlayInfo = { 0 };struPlayInfo.hPlayWnd = NULL;         //需要SDK解码时句柄设为有效值,仅取流不解码时可设为空struPlayInfo.lChannel = stru->channel;       //预览通道号struPlayInfo.dwStreamType = 0;       //0-主码流,1-子码流,2-码流3,3-码流4,以此类推struPlayInfo.dwLinkMode = 0;       //0- TCP方式,1- UDP方式,2- 多播方式,3- RTP方式,4-RTP/RTSP,5-RSTP/HTTPstruPlayInfo.bBlocked = 1;       //0- 非阻塞取流,1- 阻塞取流LPNET_DVR_JPEGPARA JpegPara = new NET_DVR_JPEGPARA;JpegPara->wPicQuality = 0;JpegPara->wPicSize = 70;int w = 2560;int h = 1440;char* Jpeg = new char[w * h];DWORD len = w * h;LPDWORD Ret = 0;if (!NET_DVR_SetCapturePictureMode(BMP_MODE)){cout << "Set Capture Picture Mode error!" << endl;cout << "The error code is " << NET_DVR_GetLastError() << endl;}vector<char>data(w * h);bool capture = NET_DVR_CaptureJPEGPicture_NEW(stru->lUserId, struPlayInfo.lChannel, JpegPara, Jpeg, len, Ret);if (!capture){printf("Error: NET_DVR_CaptureJPEGPicture_NEW = %d", NET_DVR_GetLastError());return -1;}for (int i = 0; i < w * h; i++)data[i] = Jpeg[i];if(stru->channel==1){save_image_l = imdecode(Mat(data), 1);}if (stru->channel == 2) {save_image_r = imdecode(Mat(data), 1);}return 0;
}

此时save_image_r 表示的就是一个Mat了,主要修改包括:
(1)LPNET_DVR_JPEGPARA
从这一部分开始,和sdk提供的有所区别,主要用NET_DVR_CaptureJPEGPicture_NEW替换了NET_DVR_RealPlay_V40函数
其中LPNET_DVR_JPEGPARA类提供了一些配置,包括图像大小,图像质量等。

4 完整C++代码工程

完整的代码工程点击头像获取资源,可以直接部署使用,我这里相机有两个通道图,所以拿到了两个图。

5 参考

[1] 海康威视SDK文档 https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10
[2]https://blog.csdn.net/u013832707/article/details/103405278
[3]https://blog.csdn.net/xiaojunjun200211/article/details/122237091

相关文章:

海康威视监控相机的SDK与opencv调用(非工业相机)

1.研究内容 本篇主要对海康威视的监控相机的SDK回调进行研究&#xff0c;并于opencv结合&#xff0c;保存图像,以供后续其他处理&#xff0c;开发语言为C 2.步骤及方法 2.1 海康SDK介绍 海康SDK下载地址 根据自身编译环境&#xff0c;下载对应的SDK&#xff0c;需要注意的是…...

VUE项目部署过程中遇到的错误:POST http://124.60.11.183:9090/test/login 405 (Not Allowed)

我当初报了这个405错误&#xff0c;再网上查了半天&#xff0c;他们都说什么是nginx部署不支持post访问静态资源。 但后面我发现我是因为另一个原因才导致的无法访问。 我再vue中有使用devServer:{ proxy:{} }进行路由转发。 但是&#xff01;&#xff01; 在这个配置只…...

MongoDB——索引(单索引,复合索引,索引创建、使用)

MongoDB索引 官方文档 https://docs.mongodb.com/manual/indexes/#create-an-index 默认索引 _id index Mongodb 在 collection 创建时会默认建立一个基于_id 的唯一性索引作为 document 的 primarykey&#xff0c;这个 index 无法被删除 单个字段索引 单字段索引是 Mongo…...

ebpf实战(一)-------监控udp延迟

问题背景: 为了分析udp数据通信中端到端的延迟,我们需要对整个通信链路的每个阶段进行监控,找出延迟最长的阶段. udp接收端有2个主要路径 1.数据包到达本机后&#xff0c;由软中断处理程序将数据包接收并放入udp socket的接收缓冲区 数据接收流程 2. 应用程序调用recvmsg等a…...

中西部各省市翻译协会、公关协会会长金秋圆桌会议圆满结束

中西部翻译协会共同体、中西部公共关系协会共同体共同体创建8年来&#xff0c;已成功举办了八届翻译大赛。时值第九届中西部翻译大赛将拉开序幕&#xff0c;中西部翻译协会共同体、中西部公共关系协会共同体举办的2023年度中西部各省市翻译协会、公关协会会长金秋圆桌会议&…...

极盾故事|“五步”构建某三甲医院数据安全管理集成平台

极盾科技助力某三甲医院&#xff0c;构建统一的数据安全管理集成平台&#xff0c;最终实现&#xff1a; 1、数据安全管理的自动化&#xff0c;覆盖全院医教研管15个应用场景、14项管理活动、300&#xff0b;项数据&#xff0c;完成40&#xff0b;个重要信息系统的自动监控、风…...

【开题报告】基于uni-app的恋爱打卡app的设计与实现

1.选题背景 如今&#xff0c;随着移动互联网的普及和人们对生活品质的追求&#xff0c;恋爱已经成为了许多人关注的焦点。然而&#xff0c;在恋爱过程中&#xff0c;由于种种原因&#xff0c;往往会忽略掉一些重要的时刻和细节&#xff0c;导致感情降温甚至破裂。因此&#xf…...

Python 2.7 在 Debian 服务器上获取 URL 时的 SSL 验证失败问题与解决方案

在使用Python的requests库从Debian稳定服务器上获取简单URL时&#xff0c;遇到了SSL证书错误。 根据用户的问题描述&#xff0c;您遇到了SSL证书验证失败的问题。 要解决这个问题&#xff0c;您可以采取以下步骤&#xff1a; 1. 升级到Python 2.7的最新版本&#xff1a; 首…...

导出文件到指定路径??

需求&#xff1a;点击导出pdf按钮&#xff0c;弹出系统文件夹弹框&#xff0c;可以选择保存文件的位置。 经查询window.showSaveFilePicker可实现&#xff0c;但这个api处于实验阶段&#xff0c;且用下来确实和浏览器类型、浏览器版本、以及本身api就不稳定有关系。 代码见下…...

腾讯微服务平台TSF学习笔记(二)--如何使用spring cloud zuul实现线上流量复制

需求提了n遍了&#xff0c;好好好&#xff0c;那这个需求就由我测试来做 1.在zuul端配置&#xff1a; ●假设provider-mirror是provider-demo的灰度应用 package com.tencent.tsf.msgw.zuul1.filter;import com.netflix.zuul.ZuulFilter; import com.netflix.zuul.context.Re…...

React自定义Hook之useRequest

一、简介 通过自定义hook&#xff0c;实现对http请求封装。 支持loading状态判断请求进度&#xff0c;支持获取请求正确和错误结果。 二、技术方案 use request hook export const useRequest (options) > {// 请求参数const [url, ...init] options;// 请求返回的数…...

【LeetCode】挑战100天 Day13(热题+面试经典150题)

【LeetCode】挑战100天 Day13&#xff08;热题面试经典150题&#xff09; 一、LeetCode介绍二、LeetCode 热题 HOT 100-152.1 题目2.2 题解 三、面试经典 150 题-153.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站&#xff0c;提供各种算法和数据结构的题目&…...

Android 11.0 SystemUI 去掉状态栏wifi流量上下行图标功能实现

1.概述 在11.0系统定制rom开发中,在关于systemui的定制功能总,在SystemUI 状态栏上显示时钟,电池电量 wifi图标,在显示wifi图标时,网络实时更新时,但是会时不时显示上下行图标 显得很不美观,客户需求要求不显示上下行图标,所以需要去掉上下行图标功能,接下来实现相关功能…...

掌握Net User命令:轻松创建、修改、删除和查看本地用户帐户

net user 命令用于管理本地用户帐户。它可以用于创建、修改、删除用户帐户&#xff0c;以及查看用户帐户的信息 在Windows操作系统中&#xff0c;Net User命令是一个强大的工具&#xff0c;它允许管理员创建、修改、删除和查看本地用户帐户。无论你是IT专业人士还是普通用户&am…...

性能优化中使用Profiler进行页面卡顿的排查及解决方式

文章目录 一、前言二、页面卡顿的排查方式1、耗时操作的监控2、页面卡顿的监控 三、参考链接 一、前言 程序的优化在做过线上bug处理&#xff0c;布局层级优化&#xff0c;项目依赖库版本更新&#xff0c;重复库合并&#xff0c;删除未使用的资源&#xff0c;删除冗余的库&…...

深入了解Java8新特性-日期时间API_LocalDate类

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概12000多字&#xff0c;预计阅读时间长需要10分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&…...

PyTorch基本操作和工作流程

1. PyTorch基础 张量&#xff08;Tensors&#xff09;&#xff1a; 学习 PyTorch 中表示数据的基本单元。了解如何创建、操作和使用张量。 自动微分&#xff08;Autograd&#xff09;&#xff1a; 了解 PyTorch 的自动微分机制&#xff0c;这是训练神经网络的核心。 模型定义…...

Android开发从0开始(ContentProvider与数据)

内容提供者&#xff1a;ContentProvider 为App存取内部数据提供外部接口&#xff0c;让不同应用共享数据。 ①在配置里AndroidManifest.xml <provider android:name".UserInfoProvider" android:authorities"com.example.chapter07_server.provider.U…...

STM32_6(TIM)

TIM定时器&#xff08;第一部分&#xff09; TIM&#xff08;Timer&#xff09;定时器定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时不仅…...

Linux中flask项目开启https访问

1.下载阿里云免费证书 2.项目添加https配置 3.服务器开启https访问 3.1 重新安装OpenSSL 3.2.重新安装Python 上一次已经讲过Linux安装部署Python: Linux安装Python3.10与部署flask项目实战详细记录,今天记录一下Python项目如何支持https访问…...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...