电子元器件666 2024-03-06 23:36 采纳率: 0%
浏览 42

海康威视补光灯控制程序

海康威视摄像机补光灯程序,gpt写的用不了,怎么弄呢,我想要批量控制海康威视摄像机自带的补光灯的亮度

import requests

# 构造请求头部信息
headers = {
    'Accept': '*/*',
    'Accept-Encoding': 'gzip, deflate',
    'Accept-Language': 'zh-CN,zh;q=0.9',
    'Cache-Control': 'no-cache',
    'Connection': 'keep-alive',
    'Cookie': 'language=zh; WebSession_0bd9cea766=572d734f81d3a512b7c3e044b54651003c15f9574343e12115f5064cb15cc45c; _wnd_size_mode=4; sdMarkTab_1_0=0%3AsettingBasic; sdMarkTab_2_0=0%3AbasicTcpIp; sdMarkTab_2_1=2%3AadvancedPlatform; sdMarkTab_3=0%3Avideo; sdMarkMenu=4%3Aimage; szLastPageName=image; sdMarkTab_4=0%3Adisplay',
    'Host': '192.168.0.203',
    'If-Modified-Since': '0',
    'Pragma': 'no-cache',
    'Referer': 'http://192.168.0.203/doc/page/config.asp',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
    'X-Requested-With': 'XMLHttpRequest'
}

# 构造补光灯亮度设置的XML数据
xml_data = """
<?xml version="1.0" encoding="UTF-8"?>
<ImageChannel version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
    <SupplementLight>
        <whiteLightBrightness>50</whiteLightBrightness>
    </SupplementLight>
</ImageChannel>
"""

# 发送POST请求
url = 'http://192.168.0.203/ISAPI/Image/channels/1'  # 替换为实际的API接口地址
response = requests.post(url, headers=headers, data=xml_data)

# 输出响应结果
print(response.status_code)
print(response.text)


import os
import ctypes

hc_netsdk_path = r"C:\Program Files\HCNetSDK\HCNetSDK.dll"
hc_netsdk = ctypes.WinDLL(hc_netsdk_path)


# 初始化 SDK
hc_netsdk.NET_DVR_Init()

# 登录摄像机
device_info = hc_netsdk.NET_DVR_DEVICEINFO_V30()
user_id = hc_netsdk.NET_DVR_Login_V30("192.168.1.100", 8000, "admin", "password", device_info)

# 设置补光灯参数
light_param = hc_netsdk.NET_DVR_LIGHT_PARAM()
light_param.dwSize = ctypes.sizeof(light_param)
light_param.byLightBrightness = 80  # 设置补光灯亮度(范围:0-100)
light_param.byLightMode = 1  # 设置补光灯模式(0:自动模式,1:手动模式)
light_param.byLightStatus = 1  # 设置补光灯状态(0:关闭,1:打开)
hc_netsdk.NET_DVR_SetLightParam(user_id, 1, ctypes.byref(light_param))

# 登出摄像机
hc_netsdk.NET_DVR_Logout(user_id)

# 释放 SDK 资源
hc_netsdk.NET_DVR_Cleanup()
  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-03-06 23:37
    关注

    引自免费微信小程序:皆我百晓生

    针对您想要批量控制海康威视摄像机自带补光灯亮度的需求,这里有两个方案:

    方案一:使用HTTP API(基于XML) 您提供的第一段Python代码是通过HTTP请求向海康威视摄像头发送XML数据以设置补光灯亮度。这个方法适用于具备API接口的海康威视网络摄像机,并且需要确保XML结构与所使用的摄像机型号兼容。在实际应用中,您需要根据实际情况替换URL和XML中的补光灯亮度值(whiteLightBrightness),同时对于批量控制,可以将IP地址和补光灯亮度值分别存储在列表中,然后循环执行以下操作:

    import requests
    
    # 存储摄像机IP和期望的补光灯亮度值
    cameras = [
        {"ip": "192.168.0.201", "brightness": 30},
        {"ip": "192.168.0.202", "brightness": 50},
        # 更多摄像机...
    ]
    
    headers = {...}  # 同上,保持不变
    
    for camera in cameras:
        xml_data = f"""
        <?xml version="1.0" encoding="UTF-8"?>
        <ImageChannel version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
            <SupplementLight>
                <whiteLightBrightness>{camera["brightness"]}</whiteLightBrightness>
            </SupplementLight>
        </ImageChannel>
        """
    
        url = f'http://{camera["ip"]}/ISAPI/Image/channels/1'
        response = requests.post(url, headers=headers, data=xml_data)
        print(f'Camera IP: {camera["ip"]}, Response Status Code: {response.status_code}')
        # 进一步处理响应结果...
    
    

    方案二:使用海康威视SDK(C++库调用Python示例) 第二段Python代码是通过调用海康威视的C++ SDK实现对摄像机补光灯亮度的控制。这种方式通常比HTTP API更加底层和直接,但需要安装并配置SDK环境。

    对于批量控制,同样需要遍历每台摄像机进行设置:

    import os
    import ctypes
    
    hc_netsdk_path = r"C:\Program Files\HCNetSDK\HCNetSDK.dll"
    hc_netsdk = ctypes.WinDLL(hc_netsdk_path)
    
    # 初始化 SDK
    hc_netsdk.NET_DVR_Init()
    
    # 遍历摄像机列表进行设置
    cameras = [
        {"ip": "192.168.1.100", "brightness": 30},
        {"ip": "192.168.1.101", "brightness": 50},
        # 更多摄像机...
    ]
    
    for camera in cameras:
        device_info = hc_netsdk.NET_DVR_DEVICEINFO_V30()
        user_id = hc_netsdk.NET_DVR_Login_V30(camera["ip"], 8000, "admin", "password", device_info)
    
        light_param = hc_netsdk.NET_DVR_LIGHT_PARAM()
        light_param.dwSize = ctypes.sizeof(light_param)
        light_param.byLightBrightness = camera["brightness"]
        light_param.byLightMode = 1  # 设置为手动模式
        light_param.byLightStatus = 1  # 设置为打开状态
    
        hc_netsdk.NET_DVR_SetLightParam(user_id, 1, ctypes.byref(light_param))
    
        # 登出当前摄像机
        hc_netsdk.NET_DVR_Logout(user_id)
    
    # 释放 SDK 资源
    hc_netsdk.NET_DVR_Cleanup()
    

    请确保在实际应用时替换成正确的IP地址、用户名、密码以及适当的补光灯亮度值。另外,请确认SDK版本与您的摄像机型号兼容,并正确配置了所需的环境变量和参数。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月6日

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费