树莓派python实现http请求控制海康威视摄像头转动

2023-05-16

由于海康威视sdk只支持x86架构处理器,所以官方的.so无论无何也连接不上,于是在咨询技术售后后,我们选择http的方式发送指令控制摄像头在预设点移动。折腾了一天,又是cookie啊,又是联系客服要isapi啊,后来终于折腾好了,下面是代码。
https://github.com/Linkcy97/hikvision-http-control

import requests
from requests.auth import HTTPDigestAuth
import time

# 摄像头ip地址 用户名 密码
ip = '10.168.1.166'
admin = 'admin'
password = 'actl9239'

def preset_point(point):
    """预设点位"""
    session = requests.Session()
    url = 'http://%s/ISAPI/PTZCtrl/channels/1/presets/%d/goto' % (ip, point)
    session.put(url, auth=HTTPDigestAuth(admin, password))


def pan_tilt_move(pan_speed=0, tilt_speed=0, second=1):
    """控制摄像头旋转
    :param pan_speed:水平旋转:大于0右转,小于0左转
    :param tilt_speed:垂直旋转:大于0上升,小于0下降
    :param second:旋转的持续时间
    """
    session = requests.Session()
    url = 'http://%s/ISAPI/PTZCtrl/channels/1/continuous/' % ip
    # response = requests.put(url, auth=HTTPDigestAuth('admin', 'actl9239'))
    # response = requests.put(url,param1, auth=HTTPDigestAuth('admin', 'actl9239'))
    param = "<PTZData><pan>%s</pan><tilt>%s</tilt></PTZData>" % (pan_speed, tilt_speed)
    param1 = "<PTZData><pan>0</pan><tilt>0</tilt></PTZData>"
    session.put(url, data=param, auth=HTTPDigestAuth(admin, password))
    time.sleep(second)
    session.put(url, data=param1, auth=HTTPDigestAuth(admin, password))


def change_wdr(mode='close', level=0):
    """设置宽动态等级
    :param mode:宽动态打开还是关闭 open or close
    :param level:宽动态等级 0-100
    """
    session = requests.Session()
    url = 'http://%s/ISAPI/Image/channels/1/WDR' % ip
    param = "<WDR><mode>%s</mode><WDRLevel>%d</WDRLevel></WDR>" % (mode, level)
    session.put(url, data=param, auth=HTTPDigestAuth(admin, password))


def change_color(brightness=50, contrast=50, saturation=50):
    """
    改变摄像头拍照参数
    :param brightness: 亮度 0-100
    :param contrast: 对比度 0-100
    :param saturation: 锐度 0-100
    :return:
    """
    session = requests.Session()
    url = 'http://%s/ISAPI/Image/channels/1/color' % ip
    param = "<Color>" \
            "<brightnessLevel>%d</brightnessLevel>" \
            "<contrastLevel>%d</contrastLevel>" \
            "<saturationLevel>%d</saturationLevel>" \
            "</Color>" % (brightness, contrast, saturation)
    session.put(url, data=param, auth=HTTPDigestAuth(admin, password))


def change_hlc(enabled='false'):
    """
    摄像头强光抑制
    :param enabled:开启true 关闭false
    :return:
    """
    session = requests.Session()
    url = 'http://%s/ISAPI/Image/channels/1/HLC' % ip
    param = '<HLC><enabled>%s</enabled></HLC>' % enabled
    session.put(url, data=param, auth=HTTPDigestAuth(admin, password))


def change_scenario(mode='custom1'):
    """
    设置摄像头场景
    :param mode:场景模式 可选值:indoor outdoor day night morning nightfall street lowIllumination custom1 custom2
    :return:
    """
    session = requests.Session()
    url = 'http://%s/ISAPI/Image/channels/1/mountingScenario' % ip
    param = '<MountingScenario><mode>%s</mode></MountingScenario>' % mode
    session.put(url, data=param, auth=HTTPDigestAuth(admin, password))


def change_zoom(zoom,second=1.0):
    """
    摄像头变焦
    :param zoom:倍数 大于0放大 小于0缩小
    :param second:持续时间
    :return:
    """
    session = requests.Session()
    url = 'http://%s/ISAPI/PTZCtrl/channels/1/continuous' % ip
    param = '<PTZData><zoom>%d</zoom></PTZData>' % zoom
    param1 = '<PTZData><zoom>0</zoom></PTZData>'
    session.put(url, data=param, auth=HTTPDigestAuth(admin, password))
    time.sleep(second)
    session.put(url, data=param1, auth=HTTPDigestAuth(admin, password))

if __name__ == '__main__':
    pass


就可以控制摄像头在预设点之间移动。其他的控制方法可以在海康威视控制界面 按
f12 去查看。

** 2022.7.4更新 基本功能已经完善**

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派python实现http请求控制海康威视摄像头转动 的相关文章

  • matplotlib:调整图形窗口大小而不缩放图形内容

    当您调整图形大小时 Matplotlib 会自动缩放图形窗口中的所有内容 通常这是用户想要的 但我经常想增加窗口的大小 为其他东西腾出更多空间 在这种情况下 我希望在更改窗口大小时预先存在的内容保持相同的大小 有谁知道一个干净的方法来做到这
  • 根据另一个数据框中找到的范围填充数据框中的列

    我试图根据该记录的索引值是否落在另一个数据框中的两列定义的范围内来填充数据框中的列 df1 看起来像 a 0 4 1 45 2 7 3 5 4 48 5 44 6 22 7 89 8 45 9 44 10 23 df2 是 START ST
  • 在Python中不断寻找用户输入

    我将如何编写一个始终寻找用户输入的 Python 程序 我想我希望有一个等于输入的变量 然后根据该变量的等于值会发生不同的情况 因此 如果变量是 w 那么它将执行某个命令并继续执行 直到收到另一个输入 例如 d 然后会发生不同的情况 但直到
  • python blpapi安装错误

    我试图根据 README 中的说明为 python 安装 blpapi 3 5 5 但是在运行时 python setup py install 我收到以下错误 running install running build running b
  • 如何使用 Twython 将 oauth_callback 值传递给 oauth/request_token

    Twitter 最近刚刚强制执行以下规定 1 您必须通过oauth callbackoauth request token 的值 这不是可选的 即使您已经在 dev twitter com 上设置了一个 如果您正在执行带外 OAuth 请通
  • Python ElementTree 获取带有命名空间的属性

    我试图访问 XML 中的 def 所以在这个例子中我会得到Evolus Common PlainTextV2作为输出 我似乎无法弄清楚如何获取具有名称空间的属性 如果我想得到id它工作得很好 Python for content ns in
  • 如何在每次运行 python 程序时添加新列

    我希望我的表的第一列作为卷号 第二列作为名称 每当我运行 python 程序时 我想在表中添加一列日期 在这个新列中 我想填充从 user list 获得的列表将包含值 P A P P 等 如何处理 我尝试首先通过 alter 命令添加一列
  • Python 可选参数对

    我正在使用argparse模块获取两个可选的命令行参数 parser add argument start date nargs metavar START DATE help start date in YYYY MM DD parser
  • python lxml 使用iterparse编辑并输出xml

    我已经在 lxml 库上摆弄了一段时间了 也许我没有正确理解它 或者我错过了一些东西 但我似乎无法弄清楚在捕获某个 xpath 后如何编辑文件并且然后能够在逐个元素解析时将其写回到 xml 中 假设我们有这个 xml 作为示例
  • 使用 Python 导入包含文本和数字数据的文件

    I have a txt file which has text data and numerical data The first two rows of the file have essential information in te
  • 获取 python 模块的 2 个独立实例

    我正在与以非 OO 方式编写的 python 2 x API 进行交互 它使用模块全局范围来处理一些内部状态驱动的东西 在它不再是单例的情况下需要它 并且修改原始代码 不是我们的 不是一个选择 如果不使用单独解释器的子进程运行 有什么方法可
  • 向结构化 numpy 数组添加字段

    将字段添加到结构化 numpy 数组的最简洁方法是什么 是否可以破坏性地完成 或者是否有必要创建一个新数组并复制现有字段 每个字段的内容是否连续存储在内存中 以便可以有效地完成此类复制 如果您使用 numpy 1 3 还有 numpy li
  • 列表中的“u”是什么意思?

    这是我第一次遇到这种情况 刚刚打印了一个列表 每个元素似乎都有一个u在它前面 即 u hello u hi u hey 它是什么意思 为什么列表的每个元素前面都会有这个 由于我不知道这种情况有多常见 如果您想了解我是如何遇到它的 我会很乐意
  • 从 python 文件调用 Julia 函数

    我能够创建一个 docker 环境 然后按照这个线程我有一个用 Julia 编写的高性能函数 如何从 Python 中使用它 https stackoverflow com questions 64241264 i have a high
  • python:xml.etree.ElementTree,删除“命名空间”

    我喜欢 ElementTree 解析 xml 的方式 特别是 Xpath 功能 我有一个带有嵌套标签的应用程序的 xml 输出 我想按名称访问此标签而不指定名称空间 这可能吗 例如 root findall molpro job 代替 ro
  • 如何正确将 tflite_graph.pb 转换为 detector.tflite

    我正在使用tensorflow对象检测API使用tensorflow中的ssdlite mobilenet v2 coco 2018 05 09来训练自定义模型模型动物园 https github com tensorflow models
  • 如何通过 Selenium 内部的文本查找按钮(Python)?

    我有以下三个按钮 我不知道如何获取其中的文本 例如异常值 我试过browser find element by link text Outliers click 但出现 无法找到元素 错误 我该怎么做 See find element by
  • gnuplot:第 1 行:无效命令

    stackoverflow 上可爱的人们大家好 我正在尝试使用 gnuplot 绘制数据 我首先阅读表格并提取我想要的数据 我将此数据写入 dat 文件 截至目前 我只是尝试通过命令行绘制它 但会添加必要的代码以在 python 脚本工作后
  • 如何对每一行进行 value_counts 并创建一些列,其值是每个值的计数

    我得到一个数据框如下 df c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 r1 0 1 1 1 1 0 0 0 0 0 0 0 r2 1 2 2 2 2 1 1 1 1 0 0 0 r3 1 0 2 0 0
  • 使用 python/scipy 进行 voronoi 和 lloyd 松弛

    如何使用 Qhull 确定哪些 voronoi 单元 按索引 是 正确的 由 现有顶点 组成 我正在尝试使用 LLoyds 算法和 scipy spatial Voronoi 它是 Qhull 的包装器 生成的输入来执行约束松弛 就代码而言

随机推荐

  • 并发编程 - AQS 源码

    1 AQS 源码 public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java io Seriali
  • 解决C++中两个类的头文件互相包含问题

    转载 xff1a 134条消息 C 43 43 中两个类的头文件互相包含问题 道道道人间道的博客 CSDN博客 c 43 43 头文件互相包含 我们知道 xff0c 当一个类 xff08 设类A xff09 中包含另一个类 xff08 设类
  • 用递归的方法将整数n转换成字符串

    span class token keyword int span span class token function main span span class token punctuation span span class token
  • 关于&&和||的优先级问题

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • cpu与外设之间传送数据的时存在的问题

    一 速度不匹配 I O设备的速度比cpu慢很多 xff0c I O设备的不同速度差异也很大 二 时序不匹配 每个I O设备都有自己的定时控制电路 xff0c 无法与cpu取得统一 三 信息格式不匹配 不同的I O设备存储和处理信息的格式不同
  • 微机原理计算机基础部分简答题

    简述数据总线和地址总线各自具有的特点 xff0c 如果数据总线和地址总线采用同一组信号线有什么办法将地址总线分类出来 数据总线的特点为双向三态 xff0c 数据总线位数决定cpu一次传输二进制信息的位数 地址总线的特点为单向三态 xff0c
  • 部署IIS后dll not found

    问题 xff1a Could not load file or assembly 39 XX 39 or one of its dependencies An attempt was made to load a program with
  • 汇编指令对标志位的影响

    MOV LEA XCHG PUSH POP IN OUT 传送类指令不影响标志位 ADD ADC SUB SBB CMP 加减法指令影响全部标志位 INC DEC 增一减一指令不影响CF NEG 求补指令影响除CF外的5个标志位 xff0c
  • 微处理器部分简答题

    简述8086和8088cpu的相同点和不同点 相同点 xff1a 内部数据总线均为16位 xff0c 寄存器和指令系统完全兼容 不同点 xff1a 8086的外部数据总线为16位 xff0c 8088外部数据总线为8位 xff1b 8086
  • 大浪淘沙

    裸机指的是未装备任何软件的计算机 计算机的运行速度的单位是MI S xff0c 其含义是每秒钟执行百万条指令 影响cpu处理速度的主要因素是字长 主频 ALU 有无cache 冯诺依曼原理的基本思想是程序存储和程序控制 第一代计算机采用的电
  • 关于字符数组和字符指针

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • YOLOv5核心基础知识讲解

    我这主要是江大白老师的内容 xff01 xff01 深入浅出Yolo系列之Yolov3 amp Yolov4 amp Yolov5 amp Yolox核心基础知识完整讲解 xff08 CSDN xff09 深入浅出Yolo系列之Yolov5
  • 自旋锁的实现原理

    自旋锁的实现原理 自旋锁的介绍 自旋锁和互斥锁比较相似 xff0c 都是为了实现保护共享资源而提出的一种锁机制 xff0c 在任何一个时刻 xff0c 只有一个执行单元可以获取该锁 xff0c 如果该锁已经被别的单元占用 xff0c 那么调
  • 计算机网络(传输层)

    UDP 和 TCP 的特点UDP 首部格式TCP 首部格式TCP 的三次握手TCP 的四次挥手TCP 可靠传输TCP 滑动窗口TCP 流量控制TCP 拥塞控制 1 慢开始与拥塞避免2 快重传与快恢复 网络层只把分组发送到目的主机 xff0c
  • STM32 USART_Init() 初始化函数中BRR寄存器设置解析

    首先了解一下BRR寄存器的构造 xff1a 可以看到bit15 4设置USARTDIV的整数部分 xff0c bit 3 0设置USARTDIV的小数部分 所以小数部分相当于把1分为16份 xff0c 则DIV Fraction 61 小数
  • 安装libcxsparse3.1.2报错

    报错显示 xff1a yjq 64 yjq sudo apt get install liblapack dev libsuitesparse dev libcxsparse3 1 2 libgflags dev 正在读取软件包列表 完成
  • 网络技术基础(16)

    一 xff1a M HSRP的实施 1 1 HSRP 应用场景 1 路由器物理接口下 2 路由器逻辑子接口 3 xff5d 多层交换机SVI 接口下 1 2 M HSRP 定义 多组的HSRP xff0c 实际上就是一个接口参与多个HSRP
  • windows enable long environment path

    windows gt gpedit msc gt enter Edit Group Policy gt Local Computer Policy gt Computer Configuration gt Administrative Te
  • OpenMV与stm32,msp432等单片机的串口通讯(已经写好一个识别色块的例程,可直接使用)keil(MDK)

    OpenMV与stm32单片机的串口通讯 已经写好一个识别并使单片机得到色块信息的例程 可直接使用 keil MDK 已经写好一个识别色块的例程可直接使用 识别色块 单片机得到色块的中心坐标cx cy 长和高w h及面积s 直接复制源码使用
  • 树莓派python实现http请求控制海康威视摄像头转动

    由于海康威视sdk只支持x86架构处理器 xff0c 所以官方的 so无论无何也连接不上 xff0c 于是在咨询技术售后后 xff0c 我们选择http的方式发送指令控制摄像头在预设点移动 折腾了一天 xff0c 又是cookie啊 xff