0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

通过计算机视觉和NodeJS实现灯光自动化方案分享

3D视觉工坊 来源:深度学习与计算机视觉 2023-01-16 10:07 次阅读

挑战

在家里和办公室里,人们很容易看到灯没关,即使附近几乎没有人。

除了花费更多,这种照明对环境也有负面影响。我们越来越依赖有限的、不可再生的能源来发电,而这些能源经常被浪费。

虽然我们在家中的能源使用量是名义上的,但在办公室中,使用量要多得多。因此,对环境和成本的负面影响要多得多。这需要我们采取积极行动。

当张贴“请在离开前关灯”的标志影响很小或没有影响时,考虑到灯的数量、覆盖面积和其他因素,损失的幅度更大。让某人通过每次都关掉灯来解决过度照明的问题是不可行的。人类的记忆是易变的,不可依赖。

让我们了解一下单个灯泡的影响。一个10瓦的灯泡每小时耗电0.01千瓦(kWh)。假设1千瓦时的成本为12美分。那么,在不需要时点亮的每10瓦灯泡将花费每小时0.12美分。

我们会让你的基本算术技能来计算整个办公室的总成本,方法是用灯的数量乘以上面的数字。

那么我们如何解决这个问题呢?

虽然市场上有很多智能控制和自动化解决方案,但大多数解决方案需要定期设置额外的硬件,并导致额外的维护成本。

有没有更好的方法来应对这一挑战?

所有办公场所都设置了摄像头来监控该区域。我和同事们集思广益,通过最少的投资来解决这个问题。

可以使用这些捕捉不同帧的相机来自动关闭灯光?

方案

解决方案是通过计算机的眼睛——通过计算机视觉——表达我们节约能源的意图。

那么计算机视觉到底是什么呢?

“计算机视觉,通常缩写为CV,被定义为一个研究领域,旨在开发帮助计算机‘看到’和理解照片和视频等数字图像内容的技术。”

该系统将观察来自摄像机的输入流,这基本上是摄像机的视野。每个捕获的帧被划分为4个区域。如果某个区域中没有人,则属于该区域的灯光将关闭。

这个解决方案是用opencv4 Nodejs实现的,用于流行的开源计算机视觉库OpenCV。连同socket.io和express用于渲染一个web应用程序,以显示实时视频流并模拟灯光的打开和关闭。

实施步骤

1.导入所需的库。

constsocketIOProvider=require('socket.io');

constcv=require('opencv4nodejs');

2.开始从相机捕捉视频源。

constfps=30;//framespersecond
/**
*videosourcesetto0forstreamfromwebcam
*videosourcecanbeseturlfromipcamalsoeg:"http://192.168.1.112:8080/video"
*/

constvideoSource=0;
constvideoCap=newcv.VideoCapture(videoSource);
videoCap.set(cv.CAP_PROP_FRAME_WIDTH,600);
videoCap.set(cv.CAP_PROP_FRAME_HEIGHT,600);

3.读取并以常规帧速率将其流式传输到网络应用程序。

setInterval(()=>{
constframe=videoCap.read();
constimage=cv.imencode('.jpg',frame).toString('base64');
io.emit('new-frame',{live:image});
},1000/fps);

4.以大于实时流的间隔读取以确定用户存在。

/**
*Sincevideo/imagetransformationsarecomputionallyexpensiveoperations,theseoperationsareperformedindependentoflivefeedstreaming.
*/

setInterval(()=>{
constframe=videoCap.read();
constfaces=detectFaces(frame);
constimageWithFaces=cv.imencode('.jpg',frame).toString('base64');
io.emit('new-frame',{transformed:imageWithFaces,transformationData:calculatePeoplePosition(frame,faces)});
},10000/fps);

5.使用任何OpenCV分类器检测人。在这个解决方案中,使用了“HAAR正面人脸分类器”。

/**
*
*Facedetectiontransformationonthestream
*/

constdetectFaces=(frame)=>{
letfaces=[];
constimage=frame.bgrToGray();
constclassifier=newcv.CascadeClassifier(cv.HAAR_FRONTALFACE_ALT2);
constresults=classifier.detectMultiScale(image);
if(results.objects.length){
results.objects.forEach((faceRect,i)=>{
if(results.numDetections[i]< 1) {
                return;
            }
            drawFaces(frame, faceRect);
            faces.push(faceRect);
        });
    }
    return faces;
};

6.在框架上标记面部,以便可视化检测。

/**
*Drawingrectsaroundfacesonframe
*/
constdrawFaces=(frame,faceRect)=>{
constrect=cv.drawDetection(frame,faceRect,{
color:newcv.Vec(255,0,0),
segmentFraction:4
});
};

7.确定人们相对于框架的位置,以确定他们所在的区域,从而只照亮那些部分。确定的结果随后被发送到网络应用程序进行照明模拟。更改灯泡颜色以模拟要照亮的区域。

2ad77890-952a-11ed-bfe3-dac502259ad0.png

结论

这是展示技术如何通过节约能源来改善地球的众多例子之一。你还可以通过这个简单的实现学习如何解决常见的工作场所挑战。

上述解决方案的源代码:https://github.com/Mudassir-23/opencv-nodejs-energy-saver

编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机视觉
    +关注

    关注

    8

    文章

    1698

    浏览量

    45972
  • nodejs
    +关注

    关注

    0

    文章

    20

    浏览量

    4228

原文标题:利用计算机视觉和NodeJS实现灯光自动化

文章出处:【微信号:3D视觉工坊,微信公众号:3D视觉工坊】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    一种基于GPIB和计算机并行口的SoC自动化测试方案

    件与打印机连接,实现数据、状态和命令信息的传送。本文设计的SoC自动化测试方案主要应用数据输出端口,该端口有一个8位数据输出寄存器,其I/O特性如表1所示。表1并行端口数据输出位特性  对数据输出端口
    发表于 09-05 09:17

    机器视觉计算机视觉的关系简述

    应用提高产品质量、生产效率以及操作安全性。计算机视觉主要有两种工作模式,一种是参照仿生学的方法,以人类视觉系统的结构为主要工作原理,建立相应的处理模块完成类似的功能和工作;另一种是偏于工程
    发表于 05-13 14:57

    计算机视觉及其在焊接中的应用

    简要阐述了计算机视觉的基本原理、系统结构和计算机视觉的基本处理方法,并着重讲解了在焊接自动化领域的应用情况。关键词:
    发表于 07-18 10:19 9次下载

    基于OpenCV的计算机视觉技术实现

    基于OpenCV的计算机视觉技术实现OpencV是用来实现计算机视觉相关技术的开放源码工作库,是
    发表于 11-23 21:06 0次下载
    基于OpenCV的<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>技术<b class='flag-5'>实现</b>

    电力系统自动化计算机技术

    介绍了计算机技术在电力系统自动化中部分应用情况,简要回顾了计算机技术发展对电力系统自动化的推动作用,提出了当前电力系统自动化依赖于电子技术、
    发表于 04-02 00:35 50次下载

    合肥工业网大学自动化计算机网络复习ppt

    2015年合肥工业网大学自动化计算机网络复习ppt
    发表于 12-16 17:54 0次下载

    计算机视觉与机器视觉区别

     “计算机视觉”,是指用计算机实现人的视觉功能,对客观世界的三维场景的感知、识别和理解。计算机
    的头像 发表于 12-08 09:27 1.3w次阅读

    工业自动化为何需要机器视觉?工业自动化是否需工控计算机

    工业自动化技术日益成熟,大家对于工业自动化均有所耳闻。但是,大家对工业自动化真的了解吗?工业自动化中为何使用机器视觉?工业
    的头像 发表于 12-24 20:23 790次阅读

    自动化计算机是什么,它的作用是什么

    任务都是通过使用控制机械和过程的自动化PC实现自动化的。这篇文章的目的是解释什么是自动化计算机
    的头像 发表于 01-18 15:05 6748次阅读

    用于计算机视觉训练的图像数据集

    计算机视觉使计算机能够理解图像和视频的内容。计算机视觉的目标是使人类视觉系统可以
    的头像 发表于 02-12 16:13 1395次阅读

    机器学习和计算机视觉的前20个图像数据集

    计算机视觉使计算机能够理解图像和视频的内容。计算机视觉的目标是使人类视觉系统可以
    发表于 01-28 07:40 5次下载
    机器学习和<b class='flag-5'>计算机</b><b class='flag-5'>视觉</b>的前20个图像数据集

    机器视觉计算机视觉的区别

    视觉是一种技术,它使用相机和基于图像的检测算法来识别并理解已知或未知的图像。它是实现智能自动化的一种方法,包括识别机器人、自动驾驶汽车、人脸识别和图像分类等。机器
    的头像 发表于 08-09 16:51 2010次阅读

    机器视觉计算机视觉的区别

    在人工智能和自动化技术的快速发展中,机器视觉(Machine Vision, MV)和计算机视觉(Computer Vision, CV)作为两个重要的分支领域,都扮演着至关重要的角色
    的头像 发表于 06-06 17:24 1319次阅读

    计算机视觉属于人工智能吗

    和解释视觉信息,从而实现对图像和视频的自动分析和处理。 计算机视觉的基本概念 2.1 计算机
    的头像 发表于 07-09 09:11 1285次阅读

    计算机视觉和机器视觉区别在哪

    ,旨在实现对图像和视频的自动分析和理解。 机器视觉 机器视觉计算机视觉的一个分支,主要应用于工
    的头像 发表于 07-09 09:22 445次阅读