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

本文详细介绍了在Windows 10环境下,使用Python调用海康威视网络相机C++ SDK的完整步骤,包括环境配置、文件下载、编译动态链接库和测试代码的编写。涉及到的工具有Opencv、Swigwin、Visual Studio 2015以及Boost库。在解决编译和运行过程中遇到的问题后,成功实现了从网络相机获取视频流的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

本文参考:https://blog.youkuaiyun.com/c20081052/article/details/95082377 笔者将此文章中遗漏或未遇见的问题归纳总结,并分享自己在运行过程中遇到的问题,与君共勉。


一、运行环境

Win10系统 (64位)

Python3.7 (若是有用Python2.x版本的童鞋,尽量升级Python版本。在实验过程中,有其他童鞋由于Python版本问题,无法读取Python库)

Opencv3_4_2 、Visual Studio 2015(尽量使用同一版本)

海康硬件IDS-2DC7S420MW-A

海康SDK:CH-HCNetSDKV6.1.6.45_build20210302_win64


二、相关下载

建议在D盘或者E盘新建文件夹 ,名字为:App_install 。
在这里插入图片描述

1、海康SDK下载(文末有百度网盘,可自提)

下载地址:https://open.hikvision.com/download/5cda567cf47ae80dd41a54b3?type=10
在这里插入图片描述

选择自己对应的系统版本,笔者选的是设备网络SDK_Win64。

将其解压,主要会用到里面的头文件与库文件。将其汉语名称头文件改为include、库文件改为lib。

2、安装Opencv(文末有百度网盘,可自提)

笔者安装的是Opencv3_4_2。
在这里插入图片描述

在官网上下载3.4.2版本,双击即可解压。建议放到App_install文件夹,解压后将其bin路径添加到系统环境变量path下。

3、安装Swigwin(文末有百度网盘,可自提)

Swigwin是用来封装库的。

下载链接:http://www.swig.org/index.php

笔者选择的是3.0.12这个版本(本人之前选择的是最新版本,但是由于不明确的错误问题,还是按引用文章的版本安装),将其安装并解压到App_install目录下。

将此文件名路径添加到系统环境变量path中。

4、下载boost库(文末有百度网盘,可自提)

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

笔者选择的是 boost_1_70_0.zip (因为本文主要是将win10环境下的), 将其解压到待会工程需要用的路径下即可;此处还是先解压到App_install文件夹下,待会会将解压后的文件夹拷贝到后面要用的路径下。

5、下载OpenCV-swig接口文件(文末有百度网盘,可自提)

下载地址:https://github.com/renatoGarcia/opencv-swig 将其下载并解压到App_install文件夹下。

需要用到其目录下lib文件夹中的文件opencv和opencv.i接口文件。

至此,前期准备工作搞定。App_install文件夹下的文件如下图:

在这里插入图片描述


三、实现步骤
1、使用swigwin编译生成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();

HKIPcamera.cpp

#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv2\opencv.hpp>
#include <iostream>
#include <time.h>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <windows.h>
#include "HCNetSDK.h"
#include "plaympeg4.h"

#define USECOLOR 1

using namespace cv;
using namespace std;

//--------------------------------------------
int iPicNum = 0;//Set channel NO.
LONG nPort = -1;
HWND hWnd = NULL;
CRITICAL_SECTION g_cs_frameList;
list<Mat> g_frameList;
LONG lUserID;
NET_DVR_DEVICEINFO_V30 struDeviceInfo;
HANDLE hThread;
LONG lRealPlayHandle = -1;

void yv12toYUV(char *outYuv, char *inYv12, int width, int height, int widthStep)
{
   
	int col, row;
	unsigned int Y, U, V;
	int tmp;
	int idx;
	for (row = 0; row < height; row++)
	{
   
		idx = row * widthStep;
		int rowptr = row * width;

		for (col = 0; col < width; col++)
		{
   
			tmp = (row / 2)*(width / 2) + (col / 2);
	
			Y = (unsigned int)inYv12[row*width + col];
			U = (unsigned int)inYv12[width*height + width * height / 4 + tmp];
			V = (unsigned int)inYv12[width*height + tmp];
	 
			outYuv[idx + col * 3] = Y;
			outYuv[idx + col * 3 <
内含SDK、开发文档 及Demo示例(C++、C#、Java) 设备网络SDK是基于设备私有网络通信协议开发的,为后端设备(嵌入式网络硬盘录像机、视频服务器)、前端设备(网络摄像机、网络球机、IP模块)等产品服务的配套模块,用于远程访问和控制设备软件的二次开发。 适用于但不仅限于以下产品型号: 1.编解码设备 DVR:DS-9100、DS-8100、DS-8000-S、DS-8800、DS-7800、DS-7300、DS-7200、DS-7100、DS-7000等系列,包括-ST、-SH、-SE、-SN、-RT、-RH、-XT等; NVR:DS-96000、DS-9600、DS-9500、DS-8600、DS-7900、DS-7800、DS-7700、DS-7600、DS-7100等系列,包括-I、-F、-K、-E、-H、-ST、-XT、-SN、-SE、-SNH、-SHT、-S、-SH、-RT等; XVR:DS-9000HQH-SH、DS-8100HQH(/HGH)-SH、DS-8000HQH-SH、DS-7300HQH(/HGH)-SH、DS-7200HQH(/HGH)-SH、DS-8800HQH(/HGH)(/HUH)-SH(/Fx)、DS-7900HQH(/HGH)(/HUH)-SH(/Fx)、DS-7800HQH(/HGH)(/HUH)-SH(/Ex/Fx)、DS-7100HGH-E1(/F1)等; HDVR(混合型DVR):DS-9000、DS-8000-ST、DS-7600H-ST/-S系列等; 编码器:DS-6700、DS-6600、DS-6500(-JX)、DS-6100、DS-6401HFH系列视频服务器、DS-6000系列编/解码器等; 解码器:DS-6300D(-JX)、DS-6400HD(-JX/-T)、DS-6500D(-T)等 2. 网络摄像机, 网络球机 网络摄像机:标清、高清、红外、热成像、鱼眼等,如DS-2CD7xx、DS-2CD71xx、DS-2CD72xx、DS-2CD8xx、DS-2CD81xx、DS-2CD82xx、DS-2CD84xx、DS-2CD83xx、DS-2CD11xx、DS-2CD12xx、DS-2CD13xx、DS-2CD20xx、DS-2CD21xx、DS-2CD22xx、DS-2CD23xx、DS-2CD24xx、DS-2CD25xx、DS-2CD26xx、DS-2CD27xx、DS-2CD28xx、DS-2CD29xx、DS-2CD2Axx、DS-2CD2Cxx、DS-2CD2Dxx、DS-2CD2Txx、DS-2CD2Qxx、DS-2CD30xx、DS-2CD31xx、DS-2CD32xx、DS-2CD33xx、DS-2CD34xx、DS-2CD39xx、DS-2CD3Txx、DS-2CD3Qxx、DS-2CD40xx、DS-2CD41xx、DS-2CD42xx、DS-2CD4Axx、DS-2CD62xx、DS-2CD63xx、DS-2CD65xx等 网络球机:标清、高清、红外等,如DS-2DF86xx、DS-2DF85xx、DS-2DF82xx、DS-2DF72xx、DS-2DF71xx、DS-2DE71xx、DS-2DE73xx、DS-2DE72xx、DS-2DM72xx、DS-2DM71xx、DS-2DF1-7xx、DS-2DF66xx、DS-2DF62xx、DS-2DF1-6xx、DS-2DE51xx、DS-2DE52xx、DS-2DE53xx、DS-2DM52xx、DS-2DF52xx、DS-2DC52xx、DS-2DC51xx、DS-2DF1-5xx、DS-2DE45xx、DS-2DE42xx、DS-2DE41xx、DS-2DF1-4xx、DS-2DM1-7xx、DS-2DM1-6xx、DS-2DM1-5xx等 一体化网络摄像机:DS-2ZCN3007、DS-2ZCN3006、DS-2DZ216MF、DS-2DZ2116、DS-2ZCN2006、DS-2ZCN2007、DS-2ZMN2007、DS-2ZMN2006等 3. 智能交通产品 出入口抓拍机:(i)DS-2CD95xx、(i)DS-2CD93xx、(i)DS-2CD92xx、(i)DS-2CD91xx、DS-2CD9xx、DS-TCGxxx、EVU-xxxx等 车位相机:DS-TCPxxx等 出入口控制机:DS-TMExxx等 诱导管理器:DS-TPMxxx等 4. 智能设备 行为分析、ATM防护、自动跟踪、客流量统计、人脸识别、智能交通事件、VQD视频质量诊断等 5. 其他IP设备 CVR、报警主机、门禁、可视对讲、LCD拼接屏、IP模块等
评论 24
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值