FunnyWii
FunnyWii
Published on 2024-05-31 / 60 Visits
0
0

使用Python控制海康球头相机运动的方法

控制海康球头的3种方法

做了一些调查,目前控制海康相机的方法主要有三种

  1. 海康SDK,目前海康提供了多个平台的SDK,包括Windows,X86Linux和ARM Linux(Jetson),见HiKSDK
  2. onvif,不过这个库是基于Python2做的,用起来会有些麻烦。
  3. HTTP方式。 树莓派python实现http请求控制海康威视摄像头转动

上述三种方式各有优劣,HTTP优势是思路和实现都非常简单,但是有些功能需要按F12打开浏览器调试模式,然后自己去找对应的命令;onvif我没装成功,这可能就是它的劣势……;官方的SDK上手难度高了些。

SDK

除了ARM的SDK外,其他版本的SDK中均提供了python的demo。这个demo是多平台通用的,我也没搞清楚为什么ARM版的被漏掉了。

其中有三个文件,HCNetSDK.pyPlayCtrl.pytest_main.py,以及两个文件夹,我们需要将所需平台的SDK库放入 lib文件夹中。

test_main.py中,能看到

os.chdir(r'./lib/linux')

即我们 so文件存放的路径。

此外,能看到 __init__定义了设备登录信息和加载 so库的实现。将库加载入 self.Objdll对象后并实例化 HKCam这个类后,便可使用 self.Objdll.函数名来调用SDK中的函数。

比如需要令相机复位至位置0,可以定义一个函数:

def reset_pos(self,posID):
     result = self.Objdll.NET_DVR_PTZPreset(self.lRealPlayHandle,GOTO_PRESET,posID)
     return result

其中 GOTO_PRESET变量是预定义的宏定义值,posID是在海康相机预览界面设置的位置编号。

其他控制功能,比如变焦,旋转等都可以根据SDK中提到的函数实现。


Comment