Python调用海康威视网络相机之——python调用海康威视C++的SDK

2023-11-12

运行环境:

Win10系统,64位,Anaconda3

python 3.5.5(基于anaconda环境)

opencv 3.4.2 (早前就已经安装了,本文不会讲如何安装)

Visual Studio 2015

硬件:DS-2CD3T56DWD-I5

相机SDK: CH-HCNetSDKV6.0.2.35_build20190411_Win64


准备工作:

之前常常采用python来读取usb摄像头,因为其语言风格易读且上手快。起先,使用rtsp流来读海康的网络相机,视频画面出现延迟卡顿的现象,如果对于实时性要求较高(起码得和网页预览效果相当的帧率)的话,用rtsp流读取的方式显得不可取,本文采用在python中调用HikVision的SDK读取IP相机的方式实现,帧率的话和网络预览效果相当。

python中调用C++形式的SDK, 首先是通过swig来封装需要的库。SDK给出的C++调用相机的实现算靠谱的了,所以尝试用该方法解决摄像头卡顿,画面延迟问题。参考了一些文章,都较为零零散散,因此想自己整理下分享给大家,包含了很多自己运行中出现的bug以及解决方法,具体步骤如下:

1、海康SDK下载

下载地址:https://www.hikvision.com/cn/download_61.html

选择自己对应的系统平台版本,我这边选的是设备网络SDK_Win64  (CH-HCNetSDKV6.0.2.35_build20190411_Win64.zip文件) ; 解压后得到 CH-HCNetSDKV6.0.2.35_build20190411_Win64 文件夹;

该文件夹下主要是头文件和库文件。

 

2、安装OpenCV

我安装的是OpenCV3.4.2;(安装方式参考其他文章)

解压后的OpenCV需要将其bin路径添加到系统环境变量path下;

3、安装将Swig

Swig是用来封装库的,

下载链接:http://www.swig.org/download.html

我选择的是3.0.12这个早期版本,将其解压到如下目录:

将 E:\App_install\swigwin-3.0.12路径添加到系统环境变量path中;

4、下载boost库

下载地址:https://www.boost.org/users/download/

我选择的是 boost_1_70_0.zip (因为本文主要是将win10环境下的), 将其解压到待会工程需要用的路径下即可;此处随意解压到任意路径即可,待会会将解压后的文件夹拷贝到后面要说的路径下即可~

5、下载OpenCV-swig接口文件

下载地址:https://github.com/renatoGarcia/opencv-swig

将其下载解压:

我们主要会用到其目录下lib文件夹中的文件opencv文件夹和opencv.i接口文件(下文会提到如何使用,暂且解压就行)


实现方案:

1. 使用swig编译生成python和c++数据交换需要的.py和.cxx文件

复制以下三个文件,保存到一个文件夹下,我将以下文件都放在 HicVision_python_SDK 新建文件夹下了

HKIPcamera.h

#include <opencv2/opencv.hpp>
using namespace cv;

void init(char* ip, char* usr, char* password);
Mat getframe();
void release();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python调用海康威视网络相机之——python调用海康威视C++的SDK 的相关文章

随机推荐

  • depends工具查看exe和dll依赖关系

    应用场景 在使用QT等图形用户界面应用程序开发框架开发Windows程序时 通常需要将写到的程序发布到其它计算机中进使用 在使用Qt发布程序时 虽然使用windeployqt工具能够自动打包好大部分依赖库 但还是难免会漏掉一些第三方库导致发
  • C#学习05-类简介与派生继承

    基本概念 类是一种数据结构 它可以包含数据成员 函数成员以及嵌套类型 C 中类的声明 C 中类的声明即定义 不同于c 中声明与定义是分开的 C 类构造函数 类的 构造函数 是类的一个特殊的成员函数 当创建类的新对象时执行 构造函数的名称与类
  • Scrapy源码分析之Dupfilters模块(第二期)

    大家好 我是TheWeiJun 欢迎来到我的公众号 今天给大家带来Scrapy源码分析之Dupfilters模块源码详解 希望大家能够喜欢 如果你觉得我的文章内容有价值 记得点赞 关注 特别声明 本公众号文章只作为学术研究 不用于其它用途
  • 四层负载均衡的NAT模型与DR模型推导

    导读 本文首先讲述四层负载均衡技术的特点 然后通过提问的方式推导出四层负载均衡器的NAT模型和DR模型的工作原理 通过本文可以了解到四层负载均衡的技术特点 NAT模型和DR模型的工作原理 以及NAT模型和DR模型的优缺点 读者可以重点关注N
  • 【IDEA】IDEA 下 maven 一个诡异问题,一个正常项目 过了一夜 依赖很多 飘红

    文章目录 1 场景1 1 1 概述 2 场景再现2 1 场景1 1 1 概述 我有一个项目是flink 1 9 升级到 flink 1 10 升级完毕后 我都在服务器打包了 然后过了一夜后 第二天也能正常打包 然后下午的时候 去运行主类 本
  • 【Unity底层插件】Dll打包のBug

    1 修改官方demoRenderingPlugin cpp时 UnityPluginLoad不会被调用 解决方案 https forum unity3d com threads native plug in issues unityplug
  • STM32系统时钟频率更改

    注 此文仅作为个人学习记录 海创学习记录 图0 手册时钟图 stm32的系统时钟频率在驱动文件中一般情况下是被固定的 系统频率有几种 分别为24MHz 36MHz 48MHz 56MHz 72MHz 一般情况下 md s 默认设置为72MH
  • Android最佳实践——深入浅出WebSocket协议

    转自 https blog csdn net sbsujjbcy article details 52839540 首先明确一下概念 WebSocket协议是一种建立在TCP连接基础上的全双工通信的协议 概念强调了两点内容 TCP基础上 全
  • 树莓派+多个微雪电子Serial Expansion HAT扩展板叠加方法(扩展多个IO口、串口)

    微雪电子官方教程仅介绍了单层扩展板配置方法 因此本文参考官方教程的基础上 进行多个扩展板的叠加配置 文章目录 一 打开I2C接口 二 安装库 三 生成设备 四 堆叠教程 五 扩展IO口配置 总结 一 打开I2C接口 在终端执行 sudo r
  • Lyapunov稳定性分析1(正定函数、二次型正定判定)

    一 正定函数 1 1 定义 令V x 是向量x的标量函数 S是x空间包含原点的封闭有限区域 如果对于S中的所有x 都有 则V x 是正定的 半正定 正定函数更直观的描述如下图所示 如果条件 3 中不等式的符号反向 则称V x 是负定的 负半
  • 拼多多产品怎么引流?拼多多商品怎么引更多的流量?

    说到拼多多引流技巧 对于有资源的商家来说可能没有什么难事 而对于一些刚刚入手这个行业的商家来说未尝不是一种借鉴 博傲电商今天分享几点 首先是说下直通车引流 这个方法简单粗暴 看上去只要烧钱投放广告 流量都可以进来 是一个效果比较好的方法 但
  • android内存管理 面试题,Android面试题内存&性能篇

    Android面试题内存 性能篇 由本人整理汇总 后续将继续推出系列篇 如果喜欢请持续关注和推荐 内存分配 RAM random access memory 随机存取存储器 说白了就是内存 一般Java在内存分配时会涉及到以下区域 寄存器
  • DNS 协议是什么?完整查询过程?为什么选择使用 UDP 协议发起 DNS 查询?

    你可能了解 DNS 协议是什么 那你了解 DNS 完整查询过程是什么吗 它底层是基于 TCP 还是 UDP 喃 TCP 与 UDP 又各自负责 DNS 的哪些部分喃 引言 本文从以下几个方面循序渐进走进 DNS 协议 它的完整查询过程以及底
  • 数据结构---堆----C语言实现

    目录 堆排序介绍 功能介绍 功能实现 公式 功能合并 这里添加另一种方法 只用到了向下调整法就可排序 源码1 源码2 堆排序介绍 堆排序 Heapsort 是指利用堆这种数据结构所设计的一种排序算法 是一个近似完全二叉树的结构 并同时满足堆
  • Android中协调布局CoordinatorLayout的使用

    Android自5 0之后对UI做了较大的提升 一个重大的改进是推出了MaterialDesign库 而该库的基础即为协调布局CoordinatorLayout 几乎所有的design控件都依赖于该布局 今天我们就学习一下Coordinat
  • 程序分析 clang系列学习 (二)

    clang静态检测 clang API AST匹配部分 UseAfterMoveCheck 问题概述 示例 代码 AST CFG 检测步骤 算法大致流程 代码 这里 我主要通过clang API实现自定义的代码检测工具 采用的方式类似于cl
  • 非线性弹簧摆的仿真(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 本文模拟非线性弹簧摆 弹簧运动和摆锤运动的
  • html dom动态添加id,JavaScript/DOM - 给新创建的元素添加ID

    如何通过JavaScript DOM将元素ID应用于新创建的元素 JavaScript DOM 给新创建的元素添加ID 我写的代码创建了一个由按钮触发的表 我需要为此表应用一个唯一的ID 因此它可以与我的网站上出现的其他人的样式不同 这里是
  • 计算机操作系统之期末考试复习——进程的基本状态及转换

    进程的基本状态 就绪状态 Ready 进程已处于准备好运行的状态 即进程已分配到除CPU以外的所有必要资源后 只要获得CPU 便可立即执行 执行状态 Running 进程以获得CPU 其程序正在执行的状态 阻塞状态 Block 正在执行的进
  • Python调用海康威视网络相机之——python调用海康威视C++的SDK

    运行环境 Win10系统 64位 Anaconda3 python 3 5 5 基于anaconda环境 opencv 3 4 2 早前就已经安装了 本文不会讲如何安装 Visual Studio 2015 硬件 DS 2CD3T56DWD