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

    文章

    1600

    浏览量

    45623
  • nodejs
    +关注

    关注

    0

    文章

    19

    浏览量

    4184

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

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

收藏 人收藏

    评论

    相关推荐

    计算机机房自动计费系统

    想到使用微处理器代替人工,由此诞生的计算机机房自动计费管理系统是一套适用各类机房管理的高科技产品。它的最主要功能就是实现机房管理的自动化和现代
    发表于 06-27 23:58

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

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

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

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

    2018嵌入式相关专业兼职:计算机自动化,电气等专业兼职技术人员

    本帖最后由 welldone123 于 2018-1-16 10:08 编辑 近期我司业务量增加迅速,故大量需求计算机自动化,电气等专业兼职技术人员本公司是正规专业的软件开发公司,在广州萝岗
    发表于 01-13 10:41

    自动驾驶系统要完成哪些计算机视觉任务?

    Geiger 的研究主要集中在用于自动驾驶系统的三维视觉理解、分割、重建、材质与动作估计等方面。他主导了自动驾驶领域著名数据集 KITTI 及多项自动驾驶
    发表于 07-30 06:49

    计算机控制技术简介

    Hefei University课程综述课程题目:计算机控制技术姓 名:胡年军学 号: 0805070111专 业: 自动化(1)班授课老师:丁健一、计算机控制技术简介计算机控制技术是
    发表于 09-01 08:09

    计算机在电气中的应用是什么

    原标题:电气自动化在电力系统中的应用分析近年来,随着计算机技术、信息技术的发展,以计算机软件、硬件为主的电力控制逐渐实现,这一是电力自动化
    发表于 09-08 06:06

    深度学习与传统计算机视觉简介

    文章目录1 简介1.1 深度学习与传统计算机视觉1.2 性能考量1.3 社区支持2 结论3 参考在计算机视觉领域中,不同的场景不同的应用程序需要不同的解决
    发表于 12-23 06:17

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

    简要阐述了计算机视觉的基本原理、系统结构和计算机视觉的基本处理方法,并着重讲解了在焊接自动化领域的应用情况。关键词:
    发表于 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>

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

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

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

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

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

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

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

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

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

    机器视觉计算机视觉的区别 机器视觉计算机视觉是两个相关但不同的概念。虽然许多人使用这两个术语
    的头像 发表于 08-09 16:51 1143次阅读