[问题]客户端访问ONVIF设备动检

客户端要访问ONVIF设备(IPC)的动检,一是事件,二是设置;

此处就是讨论如何设置动检区域的。

通过Video Analytics/Cell Motion Detection可以了解到关于动检的一些ONVIF配置。

参考Video Analytics.–    -34- Annex B. Cell Motion Detection

Video Analytics/Cell Motion Detection

参考Video Analytics.Annex B

Cell Motion Detector

规则定义

<tt:RuleDescription Name="tt:CellMotionDetector">
<tt:Parameters>
<tt:SimpleItemDescription Name="MinCount" Type="xs:integer"/>
<tt:SimpleItemDescription Name="AlarmOnDelay" Type="xs:integer"/>
<tt:SimpleItemDescription Name="AlarmOffDelay" Type="xs:integer"/>
<tt:SimpleItemDescription Name="ActiveCells" Type="xs:base64Binary"/>
</tt:Parameters>
<tt:MessageDescription IsProperty="true">
<tt:Source>
<tt:SimpleItemDescription
Name="VideoSourceConfigurationToken"
Type="tt:ReferenceToken"/>
<tt:SimpleItemDescription
Name="VideoAnalyticsConfigurationToken"
Type="tt:ReferenceToken"/>
<tt:SimpleItemDescription Name="Rule" Type="xs:string"/>
</tt:Source>
<tt:Data>
<tt:SimpleItemDescription Name="IsMotion" Type="xs:boolean"/>
</tt:Data>
<tt:ParentTopic>
tns1:RuleEngine/CellMotionDetector/Motion
</tt:ParentTopic>
</tt:MessageDescription>
</tt:RuleDescription>

Cell Motion Analytics Engine

<tt:AnalyticsModuleDescription Name="tt:CellMotionEngine">
<tt:Parameters>
<tt:SimpleItemDescription Name="Sensitivity"
Type="xs:integer"/>
<tt:ElementItemDescription Name="Layout" Type="tt:CellLayout"/>
</tt:Parameters>
</tt:AnalyticsModuleDescription>
<xs:complexType name="CellLayout">
<xs:sequence>
<xs:element name="Transformation" type="tt:Transformation"/>
<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="Columns" type="xs:integer" use="required"/>
<xs:attribute name="Rows" type="xs:integer" use="required"/>
<xs:anyAttribute processContents="lax"/>
</xs:complexType>

参考示例

Cell Motion Detector rule configuration

<tt:VideoAnalyticsConfiguration>
<tt:RuleEngineConfiguration>
<tt:Rule Name="MyMotionDetector" Type="tt:CellMotionDetector">
<tt:Parameters>
<tt:SimpleItem Name="MinCount" Value="4"/>
<tt:SimpleItem Name="AlarmOnDelay" Value="1000"/>
<tt:SimpleItem Name="AlarmOffDelay" Value="1000"/>
<tt:SimpleItem Name="ActiveCells" Value="/v/+8A=="/>
</tt:Parameters>
</tt:Rule>
</tt:RuleEngineConfiguration>
</tt:VideoAnalyticsConfiguration>

ActiveCells : 灰色表示已选单元格,图示对其按位掩码表示的十六进制表示为: "ff ff ff f0 f0 f0".  再应用Packbit 算法压缩则得到的字节序列为: "fe ff fe f0". 最后,通过base64Binary编码该序列则得到这样一串值: "/v/+8A==";

提示:

  1. 已知掩码字节序列,然后需要应用Packbit算法来进行压缩,参见ISO
    12369 (TIFF, Revision 6.0)
    .
  2. base64编码,gsoap已经提供非常有益的支持;

CellMotionEngine configuration

<tt:VideoAnalyticsConfiguration>
<tt:AnalyticsEngineConfiguration>
<tt:AnalyticsModule Name="MyCellMotion" Type="tt:CellMotionEngine">
<tt:Parameters>
<tt:SimpleItem Name="Sensitivity" Value="90"/>
<tt:ElementItem Name=”Layout”>
<tt:CellLayout Columns="8" Rows="6">
<tt:Transformation>
<tt:Translate x="-0.66666" y="-0.6" />
<tt:Scale x="0.1666666" y="-0.2" />
</tt:Transformation>
</tt:CellLayout>
</tt:ElementItem>
</tt:Parameters>
</tt:AnalyticsModule>
</tt:AnalyticsEngineConfiguration>

我们主要需要理解的是Transformation信息。关键是这个数据是如何度量的。

ONVIF默认参考系是原点设在画面中央,参考5.1.2.2  Spatial Relation 的example, 所举例详述是将320*240分割成2*2形式,原点置中央,其中比例与原尺寸关系为

Image.Size*Scale = [2,2];

现在再来看当前举例,此时并非2*2,而是8*6,不过我们可以抓住上例关系。可以得知到,Image.Size*[Scale] = 2*Cell.Size.

此时,我们发现[Scale]和5.1.2.2中例是有差异的这个[Scale]是坐标单位转换的缩放尺度,我们需要从单元格的尺度来来度量这个坐标转换关系,因此,

Translate >平移

这个向量是平移的缩放度量,

因此,通过这个向量我们可以计算出原点在默认参考系中的坐标值;即Translate/Scale 得到原点在默认参考系的是坐标是(-4,3);

Scale >缩放

这个向量是比例的缩放度量。

根据Image.Size,通过该向量可以计算出单元格的像素大小。

[Client]动检参数讨论与ONVIF的更多相关文章

  1. Eureka参数配置->Client端参数

     1.基本参数配置列表: 参数 默认值 说明 eureka.client.availability-zones    告知client有哪些region及availability-zones,支持配置 ...

  2. 配置kubernetes.client的参数遇到的坑

    配置kubernetes.client遇到的一些坑: 一,job-name不能重名,如果job-name已经有了,再创建job,则会发生冲突cliflict 这样将会报以下错误:Reason : Co ...

  3. Hbase记录-client访问zookeeper大量断开以及参数调优分析(转载)

    1.hbase client配置参数 超时时间.重试次数.重试时间间隔的配置也比较重要,因为默认的配置的值都较大,如果出现hbase集群或者RegionServer以及ZK关掉,则对应用程序是灾难性的 ...

  4. 由hbase.client.scanner.caching参数引发的血案(转)

    转自:http://blog.csdn.net/rzhzhz/article/details/7536285 环境描述 Hadoop 0.20.203.0Hbase 0.90.3Hive 0.80.1 ...

  5. redis集群讨论

    一.生产应用场景 二.存储架构演变 三.应用最佳实践 四.运维经验总结 第1.2节:介绍redis cluster在唯品会的生产应用场景,以及存储架构的演变.第3节:redis cluster的稳定性 ...

  6. JVM参数(三)打印所有XX参数及值

    本篇文章基于Java 6(update 21oder 21之后)版本, HotSpot JVM 提供给了两个新的参数,在JVM启动后,在命令行中可以输出所有XX参数和值. -XX:+PrintFlag ...

  7. Struts2大约Action系统培训6大约action的接受三个参数的方法

    我们知道,action在web它在控制器的发展起到了一定作用,通过接收client来到参数,运行不同的模块只实现运营,因此,接收参数是非常重要的组成部分,有接收到的参数的仅前端.操作权限运行数据库后端 ...

  8. zookeeper client API实现(python kazoo 的实现)

    这里主要分析zookeeper client API的实现方式,以python kazoo的实现代码为蓝本进行逻辑分析. 一.代码框架及介绍 API分为同步模式和异步模式.同步模式是在异步模式的基础上 ...

  9. SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer);

    SpringCloud使用Feign调用其他客户端带参数的接口,传入参数为null或报错status 405 reading IndexService#del(Integer); 第一种方法: 如果你 ...

随机推荐

  1. 【转】MFC窗口句柄各类指针获取函数

    原文网址:http://www.pythonschool.com/CPP_JHK/5003.html 获取所在类窗口的句柄 this->m_hwnd; // this是一个指针,指向当前类的实例 ...

  2. iOS类的继承关系

  3. mac上的键盘生活——打字训练

    我的打字真的很有问题,错误率实在是太高了,于是乎下定决心改掉打字习惯,起码为了对得起我的机械键盘   所谓双击键(shift)就是当一个键钮上有两个字符时的辅助选择键,像标注在数字1上的 !,就是在你 ...

  4. 关于cocos2d和cocos2dx,还有iOS上的cocos2d的ARC问题

    好吧,我承认这个我花了N个小时所做的努力都白费了. 事情的开始是这样的,今天在写cocos2dx的时候,测试发现总是出现溢出的问题,总是在main.m的autorelease报错.(好吧,如果我以后发 ...

  5. n皇后问题leetcode-51. N-Queens

    n皇后问题是应用回溯法的经典问题.任一行.列.对角线不能有两皇后并存,因此在判断是否合法时,可以将某一行是否有皇后.某一列是否有皇后分别用数组存起来.注意到,对于往左下右上的对角线,每个点的行号(i) ...

  6. java小数点的两种处理方法

    1. java.text.DecimalFormat;        //此方法为四舍五入 例如:DecimalFormat df = new DecimalFormat("#.0" ...

  7. IE浏览器中发送到onenote的选项没有调出来??

    最近使用onenote 作为笔记本,发现这个比word好用很多,特别是还有一个功能很好用,发送到onenote,可以选中网页中的内容,发送到onenote.但是有一些IE浏览器这个选项没有调出来,还是 ...

  8. Android摄像头抓取图像的格式

    android.hardware.Camera.PreviewCallback /** * Callback interface used to deliver copies of preview f ...

  9. Java和JavaScript中使用Json方法大全

    林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka   摘要:JSON(JavaScript Object Notation) 是一种轻量级的数 ...

  10. [CSS] Transforms

    Degrees and Turns Degrees are just one value that can be set to a rotate transform to determine how ...