python调用大华SDK

#! -*- coding: utf-8 -*-

from ctypes import *

libc = windll.LoadLibrary('lib/dhnetsdk.dll')


g_bNetSDKInitFlag = False

def InitTest():
    print(libc.CLIENT_Init)
    id = create_string_buffer(1024)
    char = create_string_buffer(1024)
    long = create_string_buffer(1024)
    word = create_string_buffer(1024)

    g_bNetSDKInitFlag = libc.CLIENT_Init(DisConnect(id, char, long, word), 0)

    if not g_bNetSDKInitFlag:
        print("Initialize False")
    else:
        print("Initialize client SDK done; \n")
    dwNetSDKVersion = libc.CLIENT_GetSDKVersion()
    print("NetSDK version is %d" % dwNetSDKVersion)

def RunTest():
    if not g_bNetSDKInitFlag:
        return

def EndTest():
    print("input any key to quit!\n")
    #getChar()

    if not g_bNetSDKInitFlag:
        #CLIENT_Cleanup()
        NetFlag()
    #return

def NetFlag():
    g_bNetSDKInitFlag = False


def DisConnect( lLoginID, pchDVRI
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
调用大华SDK进行抓图,首先需要安装大华SDK,并且需要安装PythonSDK封装。以下是一个简单的示例代码: ```python import ctypes # 加载SDK库 dhnetsdk = ctypes.cdll.LoadLibrary("dhnetsdk.dll") # 登录设备 login_info = dhnetsdk.LPNET_DEVICEINFO_Ex() login_info.szIP = "192.168.1.100".encode('utf-8') # 设备IP地址 login_info.szUserName = "admin".encode('utf-8') # 登录用户名 login_info.szPassword = "12345".encode('utf-8') # 登录密码 login_info.nPort = 37777 # 设备端口号 login_info.nProto = 2 # 网络协议类型,0表示TCP,1表示UDP,2表示多播 login_info.nType = 0 # 设备类型,0表示DVR,1表示NVMS login_info.bUseAsynLogin = False # 是否异步登录 login_info.byReserved = None # 保留字段 login_info.pCapParam = None # 能力集参数 login_id = dhnetsdk.CLIENT_LoginEx2(login_info, None) # 设置抓图回调函数 def capture_callback(lLoginID, pBuf, RevLen, EncodeType, CmdSerial, dwUser): print("Capture success!") capture_fn = ctypes.CFUNCTYPE(None, ctypes.c_long, ctypes.POINTER(ctypes.c_ubyte), ctypes.c_ulong, ctypes.c_ulonglong, ctypes.c_ulong, ctypes.c_void_p) capture_cb = capture_fn(capture_callback) dhnetsdk.CLIENT_SetSnapRevCallBack(login_id, capture_cb, None) # 发送抓图命令 snap_cfg = dhnetsdk.NET_SNAP_PARAMS() snap_cfg.Channel = 0 # 摄像头通道号 snap_cfg.Quality = 3 # 图片质量,0表示最好,3表示最差 snap_cfg.ImageSize = 2 # 图片大小,0表示最大,1表示640*480,2表示320*240 snap_cfg.mode = 0 # 抓图模式,0表示实时抓图,1表示定时抓图 snap_cfg.InterSnap = 0 # 抓图间隔时间,单位为秒 snap_cfg.CmdSerial = 0 # 命令序列号 snap_info = dhnetsdk.LPNET_SNAP_CFG() snap_info.dwSize = ctypes.sizeof(snap_cfg) snap_info.pSnapCfg = ctypes.pointer(snap_cfg) dhnetsdk.CLIENT_SnapPictureEx(login_id, snap_info, None) # 退出登录 dhnetsdk.CLIENT_Logout(login_id) ``` 需要注意的是,大华SDK的函数都是C语言编写的,所以在Python调用时需要进行一些类型转换。在上面的代码中,我们使用了ctypes库来进行类型转换和调用大华SDK的函数。另外,抓图回调函数需要传入一个指针类型的参数,这里我们传入了None。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值