基于html5canvas的智能安防scada巡逻模块

HT学习笔记      2022-02-16     217

关键词:

基于 HTML5 Canvas 的智能安防 SCADA 巡逻模块

前言

最近学习了 HT for Web flow 插件,除了正常的 flow 效果,其中还有两个十分好用的两个接口 getPercentPosition() 和 getPercentAngle(), 通过这两个接口可以达到很多的效果,这个 demo 我就是利用这两个接口进行对的巡逻人员的角度位置和速度进行控制。
image

代码实现

绘制背景色

首先结合 addBottomPainter() 在 HT 拓扑图形组件 graphView 底层上使用 Canvas 画笔进行绘制背景色。

// 画背景
graphView.addBottomPainter(function (g) {
    g.save();
    g.beginPath();
    g.rect(0, 0, 2000, 1600);
    g.fillStyle = "rgb(39,48,74)";
    g.fill();
    g.restore();
});

加载基础图元

然后将视图背景、人员视角俯视图和提示通过 setImage() 在拓扑组件 graphView 上以图元的形式加载出来,用 setScale() 控制图元的缩放比例使视图更具有真实感,用 setAnchor() 更改锚点,以便旋转时有视角旋转的感觉,最后通过加入 dataModel 的方式使图元加载到拓扑组件 graphView 上,其设计原理是 Object View Mapping (OVM),通过统一的模型驱动视图组件。

image

// 加载人物基础图元
var people = new ht.Node();
// 设置 Tag
people.setTag(id + 'People');
people.setImage('people');
// 设置缩放倍数
people.setScale(10, 10);
people.setPosition(100, 100);
// 设置锚点
people.setAnchor(.5, .2);
dataModel.add(people);

设置人员属性

将巡逻路径和相关人员属性以对象形式设置,其中巡逻路径按照点的形式保存在 points ,其中的转折逻辑通过 segments 进行控制,其规则如下:

  • 1: moveTo,占用1个点信息,代表一个新路径的起点
  • 2: lineTo,占用1个点信息,代表从上次最后点连接到该点
  • 3: quadraticCurveTo,占用2个点信息,第一个点作为曲线控制点,第二个点作为曲线结束点
  • 4: bezierCurveTo,占用3个点信息,第一和第二个点作为曲线控制点,第三个点作为曲线结束点
  • 5: closePath,不占用点信息,代表本次路径绘制结束,并闭合到路径的起始点

image

var people4 = {
    id: '437904',
    source: {x: 270,y: 352,},
    target: {x: 270,y: 352,},
    points: [
       {x: 262,y: 220,},{x: 380,y: 228,},{x: 509,y: 234,},{x: 509,y: 316,},{x: 513,y: 452,},{x: 382,y: 454,},{x: 278,y: 454,}
    ],
    segments: [1, 3, 3, 3, 3]
};

获得路径上点和角度

通过 getPercentPosition() 和 getPercentAngle() 获得路径 edge 上的点和角度,从而可以通过 setPosition() 控制基础图元位置,再加上动画函数 startAnim() , 从而达到在路径上进行运动旋转的效果。

var position = graphView.getPercentPosition(data, i);
var angle = graphView.getPercentAngle(data, i) - Math.PI * .5;

根据路线转角大小控制图元在转角停留时间

image

// 转角大小
var rotationAngle = Math.abs((people.getRotation() - angle) % (Math.PI * 2));
// 通过转角大小判断是否需要动画
if (rotationAngle > .2) {
    // 判断转角是否大于180度
    if (rotationAngle > Math.PI) {
        if (people.getRotation() - angle < 0) {
            people.setRotation(angle + (Math.PI * 2 - rotationAngle));
        } else {
            people.setRotation(angle - (Math.PI * 2 - rotationAngle));
        }
    }

计算路径总距离,控制行进速度

通过路径上各个点的距离计算出总路径然后按距离控制控制路径百分比获得相应的点和旋转角度。

// 计算路径长短
var distance = 0;
for (let i = 0; i + 1 < path.points.length; i++) {
    var x = path.points[i + 1].x - path.points[i].x;
    var y = path.points[i + 1].y - path.points[i].y;
    var pathDistance = Math.sqrt(x * x + y * y);
    distance += pathDistance;
}

增加监听显示标记ID

image

var preMoveData, preClickData;
// 增加鼠标移动标记显示
graphView.getView().addEventListener('mousemove', (e) => {
    const data = graphView.getDataAt(e);
    if (preMoveData === preClickData && (!data || !data.mark)) return;
    if (!data || !data.mark) {
        preMoveData && preMoveData.mark && preMoveData.mark.s('2d.visible', false);
        return;
    }
    data.mark.s('2d.visible', true);
    preMoveData = data;
});
// 增加鼠标点击标记显示
graphView.mi(e => {
    if (e.kind === 'clickData' && e.data.mark) {
        preClickData && preClickData.mark.s('2d.visible', false);
        e.data.mark.s('2d.visible', true);
        if (preClickData === e.data) {
            e.data.mark.s('2d.visible', false);
            preClickData = undefined;
        }else {
            preClickData = e.data;
        }
    }
})

总结

flow 是十分适合这种 2d 路线规划,或者是 SCADA 的可视化数据展示,尤其是 getPercentPosition() 和 getPercentAngle() 两个接口, 十分适合用于高自定义的路线可视化图形展示。

基于rk1126的人工智能安防检测方案,支持ai算法二次开发定制

 AIBOX是一款基于RK1126设计的高性能、低功耗的边缘计算设备,2Tops。RK1126支持4KH264/H265解码器解码,支持1080P@60fpsH264/H265编码器编码,支持HDMI视频输出最高可达4K@30fps,外观上具有轻量化、灵活性强等特点... 查看详情

安防服务步入云化时代?浅谈云化安防的意义

随着近几年大家的安防意识逐渐加深,国内的安防市场越来越大,一直处于国内安防弱势的安防运营服务市场变成了不少企业的新方向。去年万科物业已经更名为“万科云”,这个改变为很多物业服务企业打了头阵&#x... 查看详情

scada系统架构类型和应用

...理。SCADA的定义SCADA代表监督控制和数据采集;它是一种基于工业计算机的控制系统,用于收集和 查看详情

rk3588ai边缘计算智慧交通智能安防工业主板设计方案

本文详细介绍了基于Rockchip RK3588芯片的AI边缘计算主板外形、尺寸、技术规格,以及详细的硬件接口设计参考说明,使客户可以快速将RK3588边缘计算主板应用于工业互联网、智慧城市、智慧安防、智慧交通,智慧医疗... 查看详情

基于ios快捷指令和siri控制连接onenet物联网平台的stm32的智能安防家居系统(代码片段)

摘要    之前做了一个智能安防系统,用STM32单片机作为主控芯片,ESP8266-01s模块作为Wi-Fi模块,成功利用MQTT协议实现了连接阿里云物联网平台或中国移动OneNET平台,并支持实时上报环境温湿度、烟雾、有害气体... 查看详情

浅析基于easycvr视频技术构建工业园区视频安防大数据监管平台的方案

随着社会经济的快速发展,越来越多的工业园区也正在加快智能化建设的步伐,为入驻企业提供舒适、安全、科技、智慧的办公及生产环境。在建设园区的智能化安防视频监管平台时,需要满足两方面的需求:一... 查看详情

安防ai智能视频平台easycvr平台级联支持开启向下级的订阅功能

...这一领域的技术研发和场景化落地应用。近期我们发布了基于AI智能分析技术的EasyCVR平台+边缘AI硬件的安全生产智能化监管解决方案,可实现的功能有安全帽检测、防护服检测、烟火检测、室内通道堵塞检测、睡岗离岗检测等,... 查看详情

ai安防智能化发展至今还存在哪些问题?

安防行业是AI人工智能落地比较成熟的应用领域,其先进性和未来的可发展性是毋庸置疑的。在人工智能技术落地安防领域之后,的确为安防行业带来了翻天覆地的变化,智能化、数据化和便捷化的优势赋予了安防行... 查看详情

ai视频智能安防平台easycvr新增国标级联平台的语音对讲功能

...为一体的流媒体视频服务融合性平台。近期我们也推出了基于AI智能分析技术的EasyCVR平台+边缘AI硬件的安全生产智能化监管解决方案(安全生产摄像机),可实现的功能有安全帽检测、防护服检测、烟火检测、室内通道堵塞检测... 查看详情

人工智能_智能安防:数据采集与数据标注

智能安防是人工智能与信息技术结合的关键领域,对于城市与民生发展有重要的意义。通过生物识别、行为监测等技术手段,广泛地应用于城市道路监控、车辆人流监测、公共安全防范等领域。智能安防数据采集与标注,为智能... 查看详情

智能安防,给你更安全的家庭生活!

...人防”外,人们自主购买的安防设施正在逐年增多。作为智能家居不可或缺的组成部分,家庭安防系统也将像家庭房屋装修一样,成为购房后必须考虑的一项家庭开支。这对于智能家居来说,就有了更广阔的市 查看详情

智能家居之安防智能控制系统

...但是我觉得这种事情应该是完全可以避免的。只需要一个智能家居安防控制系统就没有《找到你》这回事。智能家居安防智能控制系统使用超声波、被动红外(PIR)探测器、气体传感器、玻璃破碎传感 查看详情

什么样的安防摄像机才算是智能安防摄像机?

从智能化萌芽到现在大家都已经处在智能化场景里,前后经过了漫长的岁月发展,伴随技术的提升,安防监控也来到了高清时代。然而,第三次人工智能的浪潮又一次将安防监控推向了更高的水平,智能视频... 查看详情

人脸智能化安防技术

智能化安防技术随着科学技术的发展与进步在二十一世纪第二个十年已迈入了一个全新的领域。近年来,由于反恐和国家安全、社会安全的需要,安防行业的智能化技术也越来越受到重视,而身份识别正是安防的核心问题。在这... 查看详情

行业前瞻安防监控行业未来ai智能垂直化发展趋势

...简洁明了的系统功能、高清画质、监控硬件的提升及行业智能化的发展为安防监控行业带来了新的发展方向。现在的安防监控行业AI智能、物联网、数字化及集成化的发展趋势将会继续经历变革,AI与数字化的垂直应用将会进... 查看详情

#冲刺创作新星#基于openharmony的家居安防系统(代码片段)

一、概述1.项目背景​ 随着城市的快速发展,城乡差距进一步缩小,居住区位置越来越集中,安全意识逐步提高。人们越来越关注他们所居住社区的安全性和可靠性,这对人们,家庭和居民区的安全提出了更高的要求。同时,随... 查看详情

基于ios快捷指令和siri控制连接onenet物联网平台的stm32的智能安防家居系统(代码片段)

...文档里看到其开放了很多实用的API,其中有一部分是基于HTTP协议的POST和GET方式与服务器进行数据交换的,笔者突发奇想,利用这些API在iOS端“快捷指令”里执行HTTP请求,然后用Siri执行快捷指令,获取当前温... 查看详情

基于html5的电力接线图scada应用

...念已经提出了多年,早些年的WebSCADA前端技术大部分还是基于Flex、Silverlight甚至Applet这样的重客户端方案,在HTML5流行前VML和SVG算是真正纯种Web方案也是有不少应用,近些年随着HTML5的流行,加上移动终端以及浏览器对HTML5支持的... 查看详情