控制海康球头的3种方法
做了一些调查,目前控制海康相机的方法主要有三种
- 海康SDK,目前海康提供了多个平台的SDK,包括Windows,X86Linux和ARM Linux(Jetson),见HiKSDK
- onvif,不过这个库是基于Python2做的,用起来会有些麻烦。
- HTTP方式。 树莓派python实现http请求控制海康威视摄像头转动
上述三种方式各有优劣,HTTP优势是思路和实现都非常简单,但是有些功能需要按F12打开浏览器调试模式,然后自己去找对应的命令;onvif我没装成功,这可能就是它的劣势……;官方的SDK上手难度高了些。
SDK
除了ARM的SDK外,其他版本的SDK中均提供了python的demo。这个demo是多平台通用的,我也没搞清楚为什么ARM版的被漏掉了。
其中有三个文件,HCNetSDK.py
,PlayCtrl.py
和 test_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中提到的函数实现。