版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式人工智能技术应用项目四基于人脸检测算法实现家用设备的控制基于人脸检测的安防检测实验任务二职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二基于人脸检测的安防检测实验理解通过人脸识别完成安防检测的实验流程。能够利用人脸识别算法,使用数据库完成用户注册;能够调用算法识别的特征数据与数据库中的数据做比对;能够结合人脸检测算法和灯光控制方法完成实验。职业能力目标01知识目标技能目标职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二基于人脸检测的安防检测实验
本实验将实现通过调用opencv模块、人脸检测算法库、sqlite3模块、serial模块对采集的图像进行人脸检测,如果不是注册用户,则打开红灯。任务描述任务要求使用人脸检测算法提取人脸特征并注册到数据库;使用人脸检测算法将新采集的人脸图像与数据库中的数据计算相似度;如果识别未注册人员,则开启红灯预警。任务描述与要求02职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二基于人脸检测的安防检测实验任务分析安防系统构建可能会涉及到哪些步骤?根据自己的了解说说安防系统原理?任务分析与计划03任务计划表项目名称基于人脸检测算法实现家用设备的控制任务名称基于人脸检测的安防检测实验计划方式自主设计计划要求请用5个计划步骤来完整描述出如何完成本次任务序号任务计划1
2
3
4
5
通过上面的思考,你是否对本任务要完成的工作有所了解?让我们一起来制订完成本次任务的实施计划吧!任务分析与计划03职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二基于人脸检测的安防检测实验04知识储备智能安防1数据库2智能安防04智能安防指的是服务的信息化、图像的传输和存储技术。智能安防04物联网技术的普及应用,使得城市的安防从过去简单的安全防护系统向城市综合化体系演变,城市的安防项目涵盖众多的领域,有街道社区、楼宇建筑、银行邮局、道路监控、机动车辆、警务人员、移动物体、船只等。智能安防04(1)视频监控管理
智能视频监控系统是采用图像处理、模式识别和计算机视觉技术,通过在监控系统中增加智能视频分析模块,借助计算机强大的数据处理能力过滤掉视频画面无用的或干扰信息、自动识别不同物体,分析抽取视频源中关键有用信息,快速准确的定位事故现场,判断监控画面中的异常情况。智能安防应用场景智能安防04(2)门禁、智能报警
智能安防报警系统是同家庭的各种传感器、功能键、探测器及执行器共同构成家庭的安防体系,是家庭安防体系的"大脑"。报警功能包括防火、防盗、煤气泄露报警及紧急求助等功能。智能安防应用场景智能安防04(3)消防
常见的就是生活中最常见的烟雾探测器。一旦烟雾达到烟感探测器的值,就会启动自动喷水装置并发出警报,管理人员可以根据终端的反馈及时赶到现场,采取相应措施,降低损失。智能安防应用场景智能安防04(4)公安行业
在公安行业主要用于筛选和跟踪嫌疑犯人的线索,人工智能可以快速的从录像选出犯罪嫌疑人的信息并且快速的传达到前端,智能机器只需要几分钟就可以完成。智能安防应用场景智能安防04(5)大厦、公共场所
人工智能相当于人的大脑,处理每天进进出出的人和车的运动信息以及实时跟踪定位,还可以区分是内部人还是外来人员,计算逗留时间来确保安全。智能安防应用场景智能安防04(6)工厂、园区
人工智能机器人可以在园区进行巡视,自动抓取信息分析并存储,还可以对是收集到的信息进行预判,一旦遇到紧急情况可以开启自动预警。智能安防应用场景智能安防04(7)在交通方面
人工智能的切入,可实时知道各条路的情况是怎样的,如果哪条路出现险情,人工智能可快速筛选出最近的最通畅的路线让大家更好的出行,节省时间。智能安防应用场景智能安防04(8)民用安防
民用安防现在使用最多,近年来入室盗窃案越来越多,家居安全成了大家关注的焦点,人工智能现在可以做到家里没人的情况下自动布防,如果有人闯入就会自动报警并且通知家人,等家庭成员回来时可以撤防确保隐私安全。智能安防应用场景04知识储备智能安防1数据库2数据库04数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库04数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:(1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。数据库04DB:数据库(Database)即存储数据的“仓库”。它保存了一系列有组织的数据。DBMS:数据库管理系统(DatabaseManagementSystem):是一种操纵和管理数据库的大型软件,例如建立、使用和维护数据库。数据库04目前互联网上常见的数据库管理软件有Sybase、DB2、Oracle、MySQL、Access、VisualFoxpro(面向对象型)、MSSQLServer、Informix、PostgreSQL(对象-关系型)这几种。以下是2017年StackOverflow对各数据库受欢迎程度进行调查后的统计结果:数据库04SELECT-从数据库中提取数据UPDATE-更新数据库中的数据DELETE-从数据库中删除数据INSERTINTO-向数据库中插入新数据CREATEDATABASE-创建新数据库ALTERDATABASE-修改数据库CREATETABLE-创建新表ALTERTABLE-变更(改变)数据库表DROPTABLE-删除表CREATEINDEX-创建索引(搜索键)DROPINDEX-删除索引SQL命令数据库04
SQLite是一种C语言库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是世界上最常用的数据库引擎。SQLite内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。SQLite源码是开源的,任何人在不同的应用场景中都可以免费的使用SQLite。数据库04DDL-数据定义语言命令描述CREATE创建一个新的表,一个表的视图,或者数据库中的其他对象。ALTER修改数据库中的某个已有的数据库对象,比如一个表。DROP删除整个表,或者表的视图,或者数据库中的其他对象。DML-数据操作语言命令描述INSERT创建一条记录。UPDATE修改记录。DELETE删除记录。DQL-数据查询语言命令描述SELECT从一个或多个表中检索某些记录。数据库04不需要一个单独的服务器进程或操作的系统(无服务器的)。SQLite不需要配置,这意味着不需要安装或管理。一个完整的SQLite数据库是存储在一个单一的跨平台的磁盘文件。SQLite是非常小的,是轻量级的,完全配置时小于400KiB,省略可选功能配置时小于250KiB。SQLite是自给自足的,这意味着不需要任何外部的依赖。SQLite事务是完全兼容ACID的,允许从多个进程或线程安全访问。SQLite支持SQL92(SQL2)标准的大多数查询语言的功能。SQLite使用ANSI-C编写的,并提供了简单和易于使用的API。SQLite可在UNIX(Linux,MacOS-X,Android,iOS)和Windows(Win32,WinCE,WinRT)中运行。SQLite数据库优点职业能力目标01任务描述与要求02任务分析与计划03知识储备04任务实施05任务检查与评价06任务小结07任务拓展08任务二基于人脸检测的安防检测实验05实验流程图05任务实施提取人脸特征写入数据库2利用opencv采集图片1人脸识别比对3安防报警4利用opencv采集图片05importcv2dWindow('image_win',flags=cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO|cv2.WINDOW_GUI_EXPANDED)cv2.setWindowProperty('image_win',cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)#全屏展示cap=cv2.VideoCapture(0)time.sleep(2)#2秒后拍照cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)ret,image=cap.read()print(ret)cv2.imshow('image_win',image)cv2.waitKey(5000)cap.release()cv2.destroyAllWindows()opencv采集图片的详细内容,参考前面章节项目1:使用OpenCV实现人脸检测中的1_opencv实现图像的读取与保存cap=cv2.VideoCapture(0)实例化一个对象赋值给capcap.set(cv2.CAP_PROP_FRAME_WIDTH,640),cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)设置采集的分辨率宽高ret,image=cap.read()读取一帧图片,返回图片内容和状态值cv2.imshow('image',image)显示图片cv2.waitKey(100)等待100毫秒cap.release()释放摄像头,以免摄像头占用;cv2.destroyAllWindows()关闭所有窗口。05任务实施提取人脸特征写入数据库2利用opencv采集图片1人脸识别比对3安防报警43注册用户1提取人脸特征2sqlite3数据库的使用提取人脸特征写入数据库05提取人脸特征写入数据库调用人脸识别的算法,提取特征,写入数据库。提取人脸特征写入数据库051.提取人脸特征人脸识别算法包含了特征提取的接口。将获取到的特征值,转化为python可读的数据数组类型。fromlib.faceDetectimportNLFaceDetect导入人脸识别算法接口类;nlFaceDetect=NLFaceDetect(libNamePath)实例化算法接口对象,执行没有报错,表示实例化成功;nlFaceDetect.NL_FD_ComInit(configPath)加载模型和配置,并初始化,执行没有报错,表示加载成功;nlFaceDetect.NL_FD_InitVarIn(image)加载采集的图片数据,返回0表示加载成功;nlFaceDetect.NL_FD_Process_C()调用人脸检测主函数处理图像,返回人脸个数;nlFaceDetect.NL_FD_Exit()释放模型和内存;face_area=(outObject.x2-outObject.x1)*(outObject.y2-outObject.y1)计算每个人脸框的大小,目的是在注册是的时候,只取站在最前面的人脸;face_area_max=max(face_areas)取最大的人脸框;max_index=face_areas.index(face_area_max)取最大人脸框的的下标,也就是第几个人脸;face_info=nlFaceDetect.djEDVarOut.faceInfos[max_index]获取最大人脸的人脸信息,作为单个人脸对齐的输入值;nlFaceDetect.NL_EA_Process_C_2(face_info)把人脸检测的结果信息,进行人脸对齐处理;faceNum,faceInfos=nlFaceDetect.NL_ER_Process_C()获取人脸特征,人脸特征是长度为512的数组。提取人脸特征写入数据库051.提取人脸特征(1)人脸对齐:人脸对齐任务即根据输入的人脸图像,自动定位出面部关键特征点,如左眼,右眼,鼻子,左嘴角,右嘴角等;(2)人脸特征提取:人脸特征提取,即获取人脸关键点的特征值,该算法,人脸特征是长度为512的数组。提取人脸特征写入数据库052.
sqlite3数据库的使用
SQLite是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎。SQLite是在世界上最广泛部署的SQL数据库引擎。SQLite源代码不受版权限制。(1)注册函数conn=sqlite3.connect("face.db")创建或连接一个数据库;cursor=conn.cursor()创建一个游标;create_user_table=''是创建用户表的命令,这里字段采用id,用户名,创建时间,特征;insert_user_table=''是插入用户表的命令,给每个字段插入相对应的数据;cursor.execute(create_tb_cmd)执行命令;mit()提交执行结果。importsqlite3#引入sqlite3数据库importtimedefregister_user(user_name,feature):conn=sqlite3.connect("face.db")#连接数据库
cursor=conn.cursor()#创建一个游标cursoncreate_user_table='createtableuser(idintegerprimarykey,user_nameTEXT,ctimeTEXT,featuresTEXT)'user_create_time=time.strftime("%Y-%m-%d%H:%M:%S",time.localtime())#数据创建时间
insert_user_table='insertintouser(user_name,ctime,features)values("{}","{}","{}")'.format(user_name,user_create_time,feature)try:#数据表不存在
cursor.execute(create_user_table)#执行创建数据表sql语句
cursor.execute(insert_user_table)#执行插入数据sql语句
exceptExceptionase:#数据表已存在
cursor.execute(insert_user_table)#执行插入数据sql语句
mit()#提交执行结果
cursor.close()#关闭游标
conn.close()#关闭对数据库的连接提取人脸特征写入数据库052.
sqlite3数据库的使用提取人脸特征写入数据库052.
sqlite3数据库的使用(2)读取函数read_cmd="select*fromuserORDERBYidDESC;"读取所有用户信息,按id值的倒叙排列,也就是最新插入的在最前面。defread_user():read_cmd="select*fromuserORDERBYidDESC;"#查询数据sql语句
res_list=[]#存储查询结果列表
try:conn=sqlite3.connect("face.db")#连接数据库
cursor=conn.cursor()#创建一个游标cursonres=cursor.execute(read_cmd)#执行查询数据sql语句
forrinres:res_list.append(r)#将查询结果存入列表
mit()#提交执行结果
cursor.close()#关闭游标
conn.close()#关闭对数据库的连接
exceptExceptionase:print('sqlerror:'+str(e))returnres_list提取人脸特征写入数据库053.注册用户
判断是否有人脸数据特征,将获取到的特征注册到数据库中,并使用读取函数,验证是否已写入。iffts_list:register_user('张三',fts_list)#注册人脸信息
res=read_user()#读取所有人脸注册数据
print(res[0])#打印第一条人脸注册数据05任务实施提取人脸特征写入数据库2利用opencv采集图片1人脸识别比对3安防报警41采集新图片2人脸识别比对人脸识别比对05人脸识别比对调用算法,识别一张新的图片,然后和数据库的数据进行比对。人脸识别比对051.采集新图片importcv2dWindow('image_win',flags=cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO|cv2.WINDOW_GUI_EXPANDED)cv2.setWindowProperty('image_win',cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)#全屏展示time.sleep(2)#2秒后拍照cap=cv2.VideoCapture(0)cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)ret,image=cap.read()print(ret)cv2.imshow('image_win',image)cv2.waitKey(5000)cap.release()cv2.destroyAllWindows()人脸识别比对052.人脸识别比对05任务实施提取人脸特征写入数据库2利用opencv采集图片1人脸识别比对3安防报警43实现灯光预警1实例化串口对象2控制灯光安防报警05安防报警安防报警05importtimeimportserialser=serial.Serial("/dev/ttyS0",baudrate=9600,timeout=0.5)1.实例化一个串口对象串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口是计算机上一种非常通用的设备通信协议。serial.Serial(name,baudrate,timeout,bytesize,writeTimeout,port)参数说明:name:串口在板上的端口号baudrate:串口波特率timeout:读超时时长bytesize:字节大小writeTimeout:写超时port:读或者写端口安防报警05打开红灯ser.flushInput()#清除串口写入缓存ser.flushOutput()#清除串口输出缓存command='FE050002FF0039F5'#打开红灯命令cmd=bytes.fromhex(command)ser.write(cmd)#对串口写入指令2.控制灯光三色灯的控制,采用的RS485串口控制,RS485采用的通信协议是Modbus。而Modbus协议传输数据使用的是HEX形式的字符。若要获得传感器DI值,就要将command转换成HEX形式。也就是将16进制转换成字符串。使用formhex()函数,对command进行转换。三色灯有经过继电器,和4150数据模块DO口。开发板通过串口控制数字量模块的DO口,来控制继电器的开关,进而控制灯光。关闭红灯ser.flushInput()#清除串口写入缓存ser.flushOutput()#清除串口输出缓存command='FE05000200007805'#关闭红灯命令cmd=bytes.fromhex(command)ser.write(cmd)#对串口写入指令安防报警05importcv2importserialdWindow('image_win',flags=cv2.WINDOW_NORMAL|cv2.WINDOW_KEEPRATIO|cv2.WINDOW_GUI_EXPANDED)cv2.setWindowProperty('image_win',cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)#全屏展示cap=cv2.VideoCapture(0)#实例化摄像头cap.set(cv2.CAP_PROP_FRAME_WIDTH,640)#设置采集图片的分辨率宽为640cap.set(cv2.CAP_PROP_FRAME_HEIGHT,480)#设置采集图片的分辨率高为480time.sleep(2)#2秒后拍照ret,image=cap.read()#采集一帧图片,并将返回的状态赋给变量ret,图片数据赋给变量imagecv2.imshow('image_win',image)#显示采集的图片cv2.waitKey(5000)#等待5000毫秒cap.release()#释放摄像头cv2.destroyAllWindows()#关闭所有窗口print(ret)3.实现灯光预警步骤1:采集人脸照片。采集一张没有注册过的人脸。安防报警053.实现灯光预警步骤2:人脸对比。利用前面注册的数据,调用人脸识别算法,实现人脸识别比对。安防报警05importtimeimportserialser=serial.Serial("/dev/ttyS0",baudrate=9600,timeout=0.5)#实例化串口对象ifnotresult_state:#如果人脸验证失败
i=0whilei<2:#打开红灯
ser.flushInput()#清楚串口写入缓存
ser.flushOutput()#清楚串口输出缓存
command='FE050002FF0039F5'#打开红灯
cmd=bytes.fromhex(command)ser.write(cmd)#指令写入串口
time.sleep(1)#休眠1秒防止代码运行过快导致开关灯的操作跟不上
#关闭红灯
ser.flushInput()#清楚串口写入缓存
ser.flushOutput()#清楚串口输出缓存
command='FE05000200007805'#关闭红灯
cmd=bytes.fromhex(command)ser.write(cmd)#指令写入串口
time.sleep(1)#休眠1秒防止代码运行过快导致开关灯的操作跟不上
i+=1ser.close()3.实现灯光预警步骤3:红
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度商业地产项目地下车位使用权转让合同4篇
- 2025产业园项目幕墙二次深化设计、监理及验收服务合同2篇
- 2024年缝纫设备及相关技术咨询合同
- 2025年度新能源汽车买卖及售后服务合同4篇
- 2025年度智能车库门购销安装一体化服务合同4篇
- 2025年度智能安防监控系统设计与实施合同4篇
- 2024铁路信号设备更新改造工程合同文本3篇
- 中国医用呼吸机行业市场调查研究及投资战略咨询报告
- 中国家居百货行业市场调查研究及投资前景预测报告
- 2025年度个人房屋抵押贷款合同终止协议4篇
- C及C++程序设计课件
- 带状疱疹护理查房
- 公路路基路面现场测试随机选点记录
- 平衡计分卡-化战略为行动
- 国家自然科学基金(NSFC)申请书样本
- 幼儿教师干预幼儿同伴冲突的行为研究 论文
- 湖南省省级温室气体排放清单土地利用变化和林业部分
- 材料设备验收管理流程图
- 培训机构消防安全承诺书范文(通用5篇)
- (完整版)建筑业10项新技术(2017年最新版)
- 第8期监理月报(江苏版)
评论
0/150
提交评论