发布网友 发布时间:2022-04-20 09:40
共2个回答
懂视网 时间:2022-05-15 13:26
示例代码:
在上述案例中,你也许会注意到画面是『绿色』的。其实,我们只需将每个像素的红和蓝设置为 0,即将 RGBA 的 r = 0; b = 0
即可。这样就会像电影的某些镜头一样,增加了科技感和神秘感。
体验地址>>
将 RGBA 中的 R 和 B 置为 0
跟踪“移动物体”
有了明亮的像素后,我们就要找出其 x 坐标的最小值与 y 坐标的最小值,以表示跟踪矩形的左上角。同理,x 坐标的最大值与 y 坐标的最大值则表示跟踪矩形的右下角。至此,我们就能绘制出一个能包围所有明亮像素的矩形,从而实现跟踪移动物体的效果。
找出跟踪矩形的左上角和右下角
体验链接>>
示例代码:
在得到跟踪矩形的左上角和右下角的坐标值后,通过 ctx.strokeRect(x, y, width, height)
API 绘制出矩形即可。
这是理想效果,实际效果请打开 体验链接
扩展:为什么上述绘制矩形的代码中的 x、y
要加 0.5
呢?一图胜千言:
性能缩小尺寸
在上一个章节提到,我们需要通过对 Canvas 每个像素进行处理,假设 Canvas 的宽为 0
,高为 480
,那么就需要遍历 0 * 480 = 307200
个像素。而在监测效果可接受的前提下,我们可以将需要进行像素处理的 Canvas 缩小尺寸,如缩小 10 倍。这样需要遍历的像素数量就降低 100
倍,从而提升性能。
体验地址>>
示例代码:
尺寸缩小 10 倍
定时器
我们都知道,当游戏以『每秒60帧』运行时才能保证一定的体验。但对于我们目前的案例来说,帧率并不是我们追求的第一位。因此,每 100 毫秒(具体数值取决于实际情况)取当前帧与前一帧进行比较即可。
另外,因为我们的动作一般具有连贯性,所以可取该连贯动作中幅度最大的(即“分数”最高)或最后一帧动作进行处理即可(如存储到本地或分享到朋友圈)。
延伸
至此,用 Web 技术实现简易的“移动监测”效果已基本讲述完毕。由于算法、设备等因素的,该效果只能以 2D 画面为基础来判断物体是否发生“移动”。而微软的 Xbox、索尼的 PS、任天堂的 Wii 等游戏设备上的体感游戏则依赖于硬件。以微软的 Kinect 为例,它为开发者提供了可跟踪最多六个完整骨骼和每人 25 个关节等强大功能。利用这些详细的人体参数,我们就能实现各种隔空的『手势操作』,如画圈圈诅咒某人。
下面几个是通过 Web 使用 Kinect 的库:
DepthJS:以浏览器插件形式提供数据访问。
Node-Kinect2: 以 Nodejs 搭建服务器端,提供数据比较完整,实例较多。
ZigFu:支持 H5、U3D、Flash,API较为完整。
Kinect-HTML5:Kinect-HTML5 用 C# 搭建服务端,提供色彩数据、深度数据和骨骼数据。
通过 Node-Kinect2 获取骨骼数据
热心网友 时间:2022-05-15 10:34
希望这篇文章能对你有帮助:
Web Service使用可扩展标记语言(XML)作为基本的数据表示方式,消除了使用不同组件模型、操作系统和编程语言的系统之间所存在的差异。简单对象访问协议(SOAP,Simple Object Access Protocol)是用于交换XML编码信息的轻量级协议。它的主要作用是为各类XML消息,提供一个简单统一的传输机制。Web Service使用SOAP来包装XML数据,通过HTTP(或MSMQ、SMTP、TCP/IP)作为传输协议,在不同平台、不同软件、不同组织之间进行传递。Web Service的描述语言为WSDL。它提供了一种描述服务接口的标准方法,定义了一种描述接口的抽象语言,使服务的接口定义于底层协议和编码方式。通用描述、发现和集成(UDDI)是Web Service的信息注册的标准规范,用来对服务提供动态的注册功能。
可见,Web Service采用XML、SOAP、HTTP、WSDL、UDDI等标准协议。这些协议与特定的操作系统、对象模型和编程语言无关。因此,利用Web Service来建立远程监控系统时
(1) 由于采用标准的协议,不受特定的开发者、平台、语言和数据编码格式的*;
(2) 开发的Web Service可以供不同的客户调用;
(3) HTTP作为传输协议可以穿过防火墙,提供在Internet上的连接和访问[8];
(4) 如果知道Web Service的地址并具有相应权限,就可以在网络的任何地方进行调用。
3 远程监控系统结构
为了实现工业过程的远程监控,基于Web Service技术的远程监控系统结构如图4所示。
图4 基于Web Service的远程监控系统结构
3.1 基于Web Service的远程监控系统结构
传统的远程监控系统多使用OPC技术来获取各种现场设备的数据,包括实时采样值、历史数据、报警数据等等。该系统也使用OPC来与现场设备进行数据交换。图4中的OPC服务器由设备供应商提供。OPC技术是以Microsoft的OLE/COM 技术为基础。因此,与其他组件技术一样,它不是防火墙友好的,难以通过防火墙从OPC服务器获取所需的数据。即使在同一局域网内,位于不同计算机上的OPC客户端要连接到OPC服务器都需要经过复杂的DCOM和安全性设置,这增加了系统开发的难度,为此要对OPC服务器的数据进行封装。通过网关(命名为“过程网关”)的形式来为各个系统提供数据。过程网关作为OPC客户端从OPC服务器获取各种过程数据,将这些数据按照一定规则重新组织,并封装在Web Service内,过程网关也从已有的控制系统中获取所需的数据,并以服务的形式暴露给各种应用。
Web已被广泛用于监控系统中,它可以提供统一的人机界面,并且操作简单友好。该系统结构使用Web来建立监控系统,Web监控系统通过过程网关获取现场设备的数据,将这些数据以Web的形式提供给远程用户。远程用户通过PC、PDA、笔记本电脑或手机访问Web页,将各种控制数据送回Web监控系统。Web监控系统再将这些控制数据通过过程网关传送给现场设备,这样就完成了对现场设备的远程监控。
当然,远程的用户也可以通过直接访问过程网关来实现远程的监控。由于Web监控系统以HTML的形式来传送消息和过程网关提供的Web Service的防火墙友好性,因此不管使用那种方式来进行远程监控,都不会受到防火墙的*。
3.2 过程网关
过程网关是现场设备与监控系统的桥梁,起着重要的数据中转作用,其结构如图5所示。
图5 过程网关与监控应用
(1) 数据获取
过程网关需要获取
来自现场的实时数据,以对工业过程进行及时的监控;
来自其他控制系统的数据,以允许监控应用与这些系统进行数据交互。
目前主要的自动化设备生产厂家,如Rockwell、Siemens等,都提供了对OPC技术支持,通过OPC来获取现场设备的数据。OPC服务器通过各种现场设备的驱动程序,直接从设备中取得数据,再将这些数据提供给OPC客户端。OPC有几种协议,分别有不同用途。例如,OPC客户端通过OPC DA获取设备或SCADA系统的数据;通过OPC AE获取报警和事件信息;通过OPC HDA获取过程控制中的历史数据。
现场控制系统将各种数据存入数据库中,过程网关通过访问这些数据库来获取控制系统的数据。获取这些数据的目的在于使远程控制系统可以与已有的控制系统进行交互,方便地将这些系统集成到新的系统中,使其获得新的生命周期。成熟的中间件技术,如ODBC、ADO等,为数据库的访问提供了简单快捷的方法。
(2) 数据的Web Service封装
通过4.2.1获取的数据需要封装为Web Service,以便Web监控系统和远程用户能够进行调用。在进行数据封装时,按照功能需求确定需要暴露给调用者的接口(类似于编程语言中的函数接口),然后通过开发工具来开发这些Web Service。这些工具有Microsoft的Visual Studio.NET、IBM的WebSphere、Borland的JBuilder等等。数据封装为Web Service后可以提供WSDL,方便调用者进行调用。
(3) 安全审查
过程网关的某些Web Service可能涉及到保密的数据,因此需要考虑数据传输的安全性,并对客户端的访问进行*。可用多种方法来提供所需的安全性
采用WS-Security标准[9];
使用SSL进行加密和签名;
使用传输层安全性(Transport Layer Security,TLS)、IPSec[10]等确保数据的安全传输;
使用服务器,如IIS,的身份验证功能;
提供用户的角色定义和权限分配。
(4) 服务调用
开发监控应用时,通过查找操作从本地或服务注册中心检索服务描述,然后进行Web监控系统的开发。而开发完成后的系统可以位于网络的任意位置。Web监控系统与过程网关提供的Web Service进行绑定,通过服务的调用实现数据的交互,由于Web监控系统的数据是通过纯HTTP协议传输的,因此是防火墙友好的。
3.3 Web监控系统
监控系统可以有多种形式。传统的监控系统通过各种组态软件开发,如InTouch,iFix、RSView32等等,但这种监控系统一般是针对集散控制系统或现场总线控制系统的,不利于进行远程的监控。每一种应用都需要相应的运行环境,这将增加用户的投资,如采用基于Web的监控系统,就可以提供统一的人机界面,有利于进行远程监控。
(1) Web监控
远程的用户可以通过浏览器访问现场的运行画面,掌握现场数据。同时可以通过浏览器发送控制命令,控制现场设备的运行。Web监控程序还可以实现数据存档、报表打印、故障报警、统计图表及曲线的显示等[11]。在开发Web监控程序时,首先要获取过程网关提供的WSDL(通过在服务注册中心查找获取,或直接通过过程网关Web Service所在的URL获取)。在开发过程中,Web Service的使用与一般的API函数类似。为了提高性能,应尽量使用异步调用的方式。ASP.NET、JSP等都可以用来进行Web监控程序的开发。由于终端设备的性能差异,需要为手机、PDA等设备开发不同于PC的Web监控程序。
(2) 冲突避免
如果多个用户同时进行监控,可能会导致冲突,因此需要*同时操作的用户数量。当一个用户访问Web监控系统时,如果此时已经达到了允许的最大访问数,则必须进行等待。此时,允许用户查看各种数据,但屏蔽用户的控制操作。当有其他的用户断开连接后,取消对该用户控制操作的屏蔽,可允许其进行相应的控制。
(3) 权限管理
权限管理为每个用户分配不同的权限,只允许用户进行授权范围内的操作。至少应将用户分为三个级别:管理员:主要负责对Web监控系统的管理和维护,对用户进行管理;高级操作员:可以浏览各种数据,并进行相应的控制操作;一般操作员:只具有浏览数据的权利,不能进行修改。
不同的用户登录系统后具有不同的操作权限,这样可以防止控制操作的滥用,增强系统的安全性。
(4) 日志管理
日志可以记录系统的运行情况以及用户进行的各种操作,特别要记录系统运行中出现的故障。对于用户操作产生的日志需要包括用户名、所进行的操作、时间和IP地址。这样可以掌握用户所进行的各种操作,也便于在出现错误时进行追踪和修复。