之前写了一个大华SDK取图程序,中间遇见很多问题,查找解决办法的时候发现网上关于大华SDK的调用,用Python写的少得可怜,基本没有。记录一下开发中遇见的问题和解决办法。
业务场景是识别人脸到人脸的时候保存背景图和人脸图。根据开发文档,流程为初始化SDK,登录设备,订阅智能事件,在智能事件回调函数中可以取到需要的图片信息。
声明函数调用
python调用C语言函数,需要先声明函数及函数返回值类型参数类型,下面以SDK初始化及设备登录函数举例。
SDK初始化第一个参数为回调函数。需要根据文档先注册回调函数。
Init_Callback = CFUNCTYPE(c_void_p,c_longlong,c_char_p,c_long,c_ulonglong)
CFUNCTYPE()第一个参数为返回值类型,后面依次为参数类型
然后声明函数调用及返回值类型和参数类型
CLIENT_Init = NetSDK_dll.CLIENT_Init
CLIENT_Init.restype = c_bool
CLIENT_Init.argtypes = (Init_Callback,c_ulonglong)
设备登录函数前几个参数传递方式是input,后两个是output,实际调用传参需要通过byref方式,声明的时候需要声明为POINTER指针
CLIENT_LoginEx2 = NetSDK_dll.CLIENT_LoginEx2
CLIENT_LoginEx2.restype = c_longlong
CLIENT_LoginEx2.argtypes = (c_char_p,c_ushort,c_char_p,c_char_p,c