Onvif协议学习:14、球机云台控制PTZ

2023-11-12

Onvif协议学习:14、球机云台控制PTZ



原文链接:https://blog.csdn.net/u013566528/article/details/102079845

一、介绍

在安防摄像头中,不仅仅涉及到固定摄像头的枪击,同样还包含可以360°转动的球机。因此对球机的云台方向控制是Onvif协议开发过程中必不可少的过程

球机的云台控制主要包含:八个方向(上、下、左、右、左上、左下、右上、右下),聚焦、放大、缩小等,这在个过程中还包含对转动速度的控制或者放大缩小的速度控制。对应的方向及正负值如下图:
在这里插入图片描述

二、代码实现

八个方向、放下及缩小控制
struct soap *stSoapNew = soap_new();
if (stSoapNew == nullptr)
{
	return ;
}
soap_set_namespaces(stSoapNew, namespaces);                                 // 设置soap的namespaces
stSoapNew->recv_timeout = 5;                                           					 // 设置超时5秒(超过指定时间没有数据就退出)
stSoapNew->send_timeout = 5;
stSoapNew->connect_timeout = 5;
soap_set_mode(stSoapNew, SOAP_C_UTFSTRING);                          // 设置为UTF-8编码,否则叠加中文		OSD会乱码
if (stSoapNew == nullptr)
{
	printf( "Onvif New Soap error!");			
	return;
}

// 如果服务要求鉴权,则以下接口就需要加上用户名密码进行鉴权
soap_wsse_add_UsernameTokenDigest(stSoapNew, NULL, pUserName, pPassWord);//对用户名密码进行加密

struct _tptz__ContinuousMove stPtzMoveReq;
struct _tptz__ContinuousMoveResponse stPtzMoveRes;
memset(&stPtzMoveReq, 0x00, sizeof(stPtzMoveReq));
memset(&stPtzMoveRes, 0x00, sizeof(stPtzMoveRes));

struct tt__PTZSpeed* stVelocity = soap_new_tt__PTZSpeed(stSoapInfo, -1);
switch (nControlType)
{
case 0:		// 八个方向的控制
{
	struct tt__Vector2D* stPanTilt = soap_new_tt__Vector2D(stSoapInfo, -1);
	stPanTilt->x = 0.2;
	stPanTilt->y = 0.2;
	stPanTilt->space = "http://www.onvif.org/ver10/tptz/PanTiltSpaces/VelocityGenericSpace";
	stVelocity->PanTilt = stPanTilt;
	break;
}
case 1:			// 放大(stZoom->x > 0)、缩小(stZoom->x < 0)
{
	struct tt__Vector1D* stZoom = soap_new_tt__Vector1D(stSoapInfo, -1);
	stZoom->x = 0.2;		
	stZoom->space = "http://www.onvif.org/ver10/tptz/ZoomSpaces/VelocityGenericSpace";
	stVelocity->Zoom = 0.2;
	break;
}
default:
	break;
}

stPtzMoveReq.Velocity = stVelocity;
stPtzMoveReq.ProfileToken = pMainStreamToken;		// 前面获取到的媒体流的token
// pProfilesAddr 是soap_call___tds__GetCapabilities接口获取到的PTZ地址,具体实现参见:[获取设备能力](https://blog.csdn.net/u013566528/article/details/102070372)
nRet = soap_call___tptz__ContinuousMove(stSoapNew, pProfilesAddr, nullptr, &stPtzMoveReq, &stPtzMoveRes);
if (nRet != SOAP_OK || stSoapInfo->error != SOAP_OK)
{
	printf("Login handle is %d Gsoap return is %d labbuf is %s", (int)this, nRet, stSoapInfo->labbuf);
	return;
}
聚焦控制
struct soap *stSoapNew = soap_new();
if (stSoapNew == nullptr)
{
	return ;
}
soap_set_namespaces(stSoapNew, namespaces);                                 // 设置soap的namespaces
stSoapNew->recv_timeout = 5;                                           					 // 设置超时5秒(超过指定时间没有数据就退出)
stSoapNew->send_timeout = 5;
stSoapNew->connect_timeout = 5;
soap_set_mode(stSoapNew, SOAP_C_UTFSTRING);                          // 设置为UTF-8编码,否则叠加中文		OSD会乱码
if (stSoapNew == nullptr)
{
	printf( "Onvif New Soap error!");			
	return;
}

// 如果服务要求鉴权,则以下接口就需要加上用户名密码进行鉴权
soap_wsse_add_UsernameTokenDigest(stSoapNew, NULL, pUserName, pPassWord);//对用户名密码进行加密

struct _timg__Move stMoveReq;
struct _timg__MoveResponse stMoveRes;
memset(&stMoveReq, 0x00, sizeof(stMoveReq));
memset(&stMoveRes, 0x00, sizeof(stMoveRes));
tt__FocusMove *stFocusMove = soap_new_tt__FocusMove(stSoapNew, 1);
tt__ContinuousFocus *stContinuFocus = soap_new_tt__ContinuousFocus(stSoapNew, 1);
stContinuFocus->Speed = fSpeed;					// 聚焦的速度
stFocusMove->Continuous = stContinuFocus;
stFocusMove->Absolute = nullptr;
stFocusMove->Relative = nullptr;
stMoveReq.Focus = stFocusMove;
stMoveReq.VideoSourceToken = VideoSourceConfigurationToken;		// 配置token
// pProfilesAddr 是soap_call___tds__GetCapabilities接口获取到的Ptz地址,具体实现参见:[获取设备能力](https://blog.csdn.net/u013566528/article/details/102070372)
nRet = soap_call___timg__Move(stSoapNew, pProfilesAddr, nullptr, &stMoveReq, &stMoveRes);
if (nRet != ONVIFSDK_NOERROR || stSoapNew->error != SOAP_OK)
{
	printf("Login handle is %d Gsoap return is %d labbuf is %s", (int)this, nRet, stSoapInfo->labbuf);
	return;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Onvif协议学习:14、球机云台控制PTZ 的相关文章

  • linux设备上的Onvif 实现21:解决大华摄像头无法使用问题

    好长时间没有再写该系列文章了 xff0c 最近刚好摸索着解决了大华摄像头无法使用问题 xff0c 记录下来 xff0c 应该对其他博友有所帮助 之前虽然写了一大堆文章说明了如何使用gsoap连接摄像头 xff0c 但这是针对一台海康的摄像头
  • Onvif鉴权实现方式

    Onvif鉴权实现方式 Digest 61 B64ENCODE SHA1 B64DECODE Nonce 43 Date 43 Password gsoap中digest生成代码 xff1a int soap wsse add Userna
  • linux下移植onvif至arm环境

    前言 onvif是一种网络摄像头协议 xff0c linux网络摄像头这一块是需要移植onvif协议的 xff0c 整个移植过程是这样的 xff0c 首先onvif协议是依赖于gsoap的 xff0c 所以需要先将gsoap编译安装 xff
  • go+gSoap+onvif学习总结:7、进行镜头调焦、聚焦和预置点的增删改查

    cgo gSoap onvif学习总结 7 进行镜头调焦 聚焦和预置点的增删改查 文章目录 cgo gSoap onvif学习总结 7 进行镜头调焦 聚焦和预置点的增删改查 1 前言 2 gSoap生成c代码框架 3 完成c代码实例并测试
  • ONVIF测试工具 ONVIF Device Test Tool的使用

    ONVIF测试工具 ONVIF Device Test Tool的使用 双击 打开软件 选择当前网络 点击 Discover Devices 进行搜索 可以看到搜索到一个设备
  • python实现onvif客户端及问题小结

    python实现onvif客户端及问题小结 文章目录 python实现onvif客户端及问题小结 1 前言 2 python onvif安装及ptz示例 2 1 openwrt下安装pip及python onvif 2 2 ptz示例 3
  • gsoap学习笔记一

    本文章是对gsoap中生成的cpp类型的代码框架的应用 因为要实现一些ONVIF规范中的一些功能 所以选择了gsoap生成代码框架 但是发现好多博客上都是生成的C的代码框架 使用起来很麻烦 而且引用插件功能的时候 什么时候需要修改文件内容
  • Onvif协议学习:8、设备校时

    Onvif协议学习 8 设备校时 文章目录 Onvif协议学习 8 设备校时 1 编码流程 2 注意事项 3 示例代码 原文链接 https blog csdn net benkaoya article details 72486511 1
  • cgo+gSoap+onvif学习总结:2、wsl编译安装gSoap

    cgo gSoap onvif学习总结 2 wsl编译安装gSoap 文章目录 cgo gSoap onvif学习总结 2 wsl编译安装gSoap 1 前言 2 gSoap编译安装 wsl环境编译安装 3 最后 1 前言 结合官网安装教程
  • Onvif协议学习:9、设备能力

    Onvif协议学习 9 设备能力 文章目录 Onvif协议学习 9 设备能力 1 原理简介 2 编码流程 3 示例代码 原文链接 https blog csdn net benkaoya article details 72486544 1
  • Go语言实现Onvif客户端:7、获取摄像头快照

    Go语言实现Onvif客户端 7 获取摄像头快照 文章目录 Go语言实现Onvif客户端 7 获取摄像头快照 1 代码 2 结果 3 查看 1 代码 摄像头对该时刻可以进行快照抓拍 抓拍结果可以以url地址的形式提供 在浏览器上可以直接查看
  • cgo+gSoap+onvif学习总结:5、获取profileToken、rtsp流地址、快照地址及cgo程序signal SIGSEGV: segmentation violation解决方法

    cgo gSoap onvif学习总结 5 获取profileToken rtsp流地址 快照地址及cgo偶发signal SIGSEGV segmentation violation分割违例解决方法 文章目录 cgo gSoap onvi
  • cgo+gSoap+onvif学习总结:1、方案初衷、资料收集及cgo实现helloworld

    cgo gSoap onvif学习总结 1 方案初衷 资料收集及cgo实现helloworld 文章目录 cgo gSoap onvif学习总结 1 方案初衷 资料收集及cgo实现helloworld 1 前言 2 资料收集 3 cgo h
  • Go语言实现Onvif客户端:4、配置网络信息

    Go语言实现Onvif客户端 4 配置网络信息 文章目录 Go语言实现Onvif客户端 4 配置网络信息 1 思路 2 代码 上一节获取到网络接口token后 就可进行一些网络配置了 这里我们暂时只实现进行ip地址的配置接口和封装 1 思路
  • Onvif协议学习:12、修改分辨率

    Onvif协议学习 12 修改分辨率 文章目录 Onvif协议学习 12 修改分辨率 1 原理简介 2 函数接口 3 编码流程 4 示例代码 原文链接 https blog csdn net benkaoya article details
  • 无法使用 C# 连接到启用 OnVif 的相机

    我是第一次使用 IPCam 并尝试连接到 OnVif 摄像机 我查看了各种论坛和堆栈溢出 并提出了以下代码 我知道该代码没有做任何有用的事情 但它现在只是一个概念证明 它找到我网络上的所有 4 个摄像头 然后我手动连接到其中一个摄像头以拉回
  • ONVIF 获取系统日期和时间请求

    一旦我从 UDP 多播请求返回 239 255 255 250 的响应 我返回带有 XAddrs 的 ProbeMatchhttp 10 10 10 10 1234 onvif device service 我现在如何执行 GetSyste
  • C# 中的 ONVIF api 捕获图像

    我有一个 ONVIF 网络摄像机 我想从相机捕获图像 以便可以处理该图像并将其保存到文件系统 我发现有一个onvif api提供了一个方法GetSnapshotUri这应该为我提供图像快照 http www onvif org onvif
  • 基于ONVIF wsdl生成Java webservice(自顶向下方法)

    我想为像相机这样的设备生成服务器代码 这些设备有一个标准协议 称为ONVIF https www onvif org它发布了一些流行的 WSDL 文档 所以我必须从 ONFIV 的 WSDL 文档生成一个接口和骨架 当我使用 wsdl2ja
  • Onvif - 尝试了解它是如何工作的

    首先 我完全没有使用ONVIF的经验 我在一家公司获得了奖学金 并被要求与它一起工作 控制一些相机并从它们那里获取照片 但他们也不知道它是如何工作的 所以没有人可以帮助我很多 我正在阅读 ONVIF 网页上提供的规范 但我不太明白 我知道我

随机推荐

  • 为什么不用SSH了?SSH过时了吗?

    ssh最重要的还是后端处理 前端渲染部分已经被如今的互联网公司废掉了 例如用Vue等框架替代 而且随着docker一波热 相比早期 一站到底 的大而全 现在很多非核心的模块 被细化拆分 人称微服务 互联网公司节奏很快 迭代也很快 天生对小而
  • 计算机视觉项目-文档扫描OCR识别

    欢迎来到本博客 本次博客内容将继续讲解关于OpenCV的相关知识 作者简介 目前计算机研究生在读 主要研究方向是人工智能和群智能算法方向 目前熟悉python网页爬虫 机器学习 计算机视觉 OpenCV 群智能算法 然后正在学习深度学习的相
  • Python报错:[function object has no attribute plot]原因解释

    错误的翻译为 对象没有这个属性 plot 先看一个原先错的小例子的代码及结果 然后再看一下自己python的文件matplotlib的目录 现在应该一目了然了吧 错误的原因我把matplotlib里面的pyplot类中的plot 方法as为
  • 玩转 Numpy 的精选习题

    玩转 Numpy 的精选习题 一 1 打印 numpy 版本 import numpy as np print np version gt 1 16 5 2 创建 10 个元素空向量 Z np zeros 10 print Z gt 0 0
  • Tornado框架基础 -- (一)Tornado的介绍

    1 什么是Tornado 全称为Tornado Web Server 是一种Web服务器软件的开源版本 2 特点 1 作为Web框架 是一个轻量级的Web框架 类似于另一个web框架Web py 其拥有异步非阻塞IO的处理方式 2 作为We
  • SSLHandshake aborted:ssl... 解决方法

    最近有用户报出了这个问题 SSLHandshake aborted ssl 0x7b8b5260 I O error during system call Read only file system 百度查了下 可能原因 1 服务或者客户端
  • 正则表达式验证邮件格式

    public override void Checked string vInputName this SqlCheck ExecutePara InputName string vValue ObjectHelper GetString
  • PCL 偏度平衡滤波(SKF)算法

    目录 一 算法原理 1 原理概述 2 参考文献 二 代码实现 三 结果展示 一 算法原理 1 原理概述 SKF算法假定点云中自然地面点的高程概率密度分布服从正态分布 非地面点会使得点云中点的高程概率密度分布偏离正态分布 呈现出偏态分布 偏度
  • CRC循环冗余校验码

    CRC校验 CRC Cyclic Redundancy Check 即循环冗余检验码 是数据通信领域中最常用的一种差错校验码 其特征是信息字段和校验字段的长度可以任意选定 基本原理 在K位信息码后再拼接R位的校验码 整个编码长度为N位 因此
  • 服务器硬件测试选型

    面对琳琅满目的服务器硬件品牌和五花八门的硬件型号规格 如何选择高性价比的硬件配置 是系统运维的一项重要工作 系统工程师需要根据产品线的不同需求 测试服务器的各项性能以及功耗 同时结合成本确定出性价比最高的服务器配置 因此 硬件测试便成为了服
  • U-Boot 学习

    相关概念 参考文章 u boot FIT image介绍 wowotech net X 010 UBOOT 使用booti命令启动kernel Bubblegum 96平台 wowotech net FDT device tree 全称是f
  • SHELL入门学习

    SHELL SHELL 入门学习 shell 变量 shell echo shell printf shell test shell if then shell While shell function SHELL 入门学习 shell 变
  • 1.[springMvc]Servlet的基础知识

    Servlet的基础知识 servlet是啥 Servlet运行流程 示例 Servlet GenericServlet HttpServlet ServletContext Filter servlet映射器 servlet是啥 Java
  • 联合概率、边际概率、条件概率

    一时忘了联合概率 边际概率 条件概率是怎么回事 回头看看 某离散分布 联合概率 边际概率 条件概率的关系 其中 Pr X x Y y 为 XY的联合概率 Pr X x 为 X的边际概率 Pr X x Y y 为 X基于Y的条件概率 Pr Y
  • Openwrt编译报错 TCP Fast Open is not available for client mode 的解决办法

    报错信息 configure error TCP Fast Open is not available for client mode please rerun without enable tfo client gmake 3 Makef
  • Python安装教程步骤2:Windows中创建虚拟环境安装Pytorch并在PyCharm中配置虚拟环境

    python安装教程步骤2 windows中Anaconda创建虚拟环境安装pytorch并在pycharm中使用虚拟环境 作者介绍 windows中Anaconda创建虚拟环境安装pytorch 1 添加镜像源 2 创建虚拟环境 3 进入
  • ubuntu16.04详细安装pytorch(GPU)

    安装pytorch要安装两个模块 torch和torchvision torch是主模块 用来搭建神经网络 torchvision是辅模块 里面有搭建好的网络可以直接用 1 安装pip3 ubuntu自带python3 5和2 7 所以没装
  • linux 设置静态 ip 或者 修改 DNS

    设置 linux 静态 ip 或者 添加DNS preface 操作步骤 1 执行命令 nmtui 2 确认设置是否成功 supplements 3 1 linux 中 子网掩码的表示 3 2 DNS 和 ip 设置 3 3 DHCP 协议
  • Ribbon负载均衡(一)Ribbon实战

    Ribbon实战 文章目录 Ribbon实战 1 注册中心 1 1 服务注册到注册中心 1 2 服务注册列表Ribbon负载均衡选取相应节点 2 负载均衡方案 2 1 集中式负载均衡 2 2 进程内聚在均衡 3 Ribbon实践 3 1 配
  • Onvif协议学习:14、球机云台控制PTZ

    Onvif协议学习 14 球机云台控制PTZ 文章目录 Onvif协议学习 14 球机云台控制PTZ 一 介绍 二 代码实现 八个方向 放下及缩小控制 聚焦控制 原文链接 https blog csdn net u013566528 art