版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
参考文献董君.基于人工智能技术的新工科人才培养模式改革探索[J].科技与创新,2022(22):33-35.Anderson
Izefia.
Hospital
financial
remote
reimbursement
information
management
system
based
on
blockchain
technology[J].
Computer
Informatization
and
Mechanical
System,2022,5(4).姜淑慧,江世银,张杰.教育人工智能赋能教育发展与重塑技术应用研究[J].黑龙江高教研究,2022,40(11):18-24.王勇.5G+电视现场直播系统的优化[J].电视技术,2022,46(10).王俊莉.山西媒体智慧云平台融合直播系统的设计与应用[J].广播电视网络,2022,29(9):94-96.肖艳,李英,徐媛媛.网络直播教学环境下的大学英语教学探究[J].科技视界,2022(22):95-97.黄春机.基于AI视觉技术构建柔性生产数字化车间[J].智能制造,2022(3):30-33.TrueCircle
launches
new
AI
vision
system
to
improve
yield
and
quality
for
PET
&
HDPE
recyclers[J].
M2
Presswire,2022.张倩,董珍珍,段星汝,韩天红.高校师生对网络直播平台“教”与“学”效果现状及满意度调查分析[J].中阿科技论坛(中英文),2022(6):167-172.王凯文,覃文忠,李睿.高校学生网络直播交往异化与消解路径研究[J].新闻爱好者,2022(5):110-112.龙飞.AI视觉平台赋能智慧园区建设[J].中国安防,2022(4):49-52.唐淮,张晶,李为颖,冯冬梅,吴科进.基于AI视觉的工业机器人抓取系统设计[J].内燃机与配件,2022(6):185-187.STRATIO
PARTNERS
WITH
NIPA
ON
AI
VISION
SYSTEM[J].
Worldwide
Databases,2022,34(2).Li-Hui
Nian,
Jing
Wei,
Can-Bin
Yin.
The
promotion
role
of
mobile
online
education
platform
in
students'
self-learning[J].
Int.
J.
of
Continuing
Engineering
Education
and
Life-Long
Learning,2019,29(1/2).Canbin
Yin,Lihui
Nian,Jing
Wei.
The
promotion
role
of
mobile
online
education
platform
in
students'
self-learning[J].
International
Journal
of
Continuing
Engineering
Education
and
Life-Long
Learning,2019,29(1/2).郭鹏宇.
基于分割的空间目标视觉跟踪方法[P].
北京市:CN111539993A,2020-08-14.彭慧伶,孙长库,王鹏.
一种视觉跟踪组件安装参数标定装置和方法[P].
天津市:CN111489399A,2020-08-04.陈晓蓉,吴承贵,吕余华,程江江,林晓轩,李乐,白丽园,孔令伟,胡杰,谢小云,古阳.
一种便捷的埋弧焊小车视觉跟踪装置[P].
江苏省:CN214350184U,2021-10-08.Guo
Guizhong.
Electromechanical
Feed
Control
System
in
Chemical
Dangerous
Goods
Production.
[M].2020Deep
Neural
Networks
You
Mingyu;Luo
Chaoxian;Zhou
Hongjun.
Visual
Landmark
Learning
Via
Attention-Based
Deep
Neural
Networks.2021
Zheng
Hexin.False
Vision
Graphics
in
Logo
Design
Based
on
Artificial
Intelligence
in
the
Visual
Paradox
Environment
[P].
M2
Presswire.2022Altaf
Alam;Zainul
Abdin
Jaffery.
A
Vision
based
Indian
Traffic
Sign
Classification.
2020.附录电路图源代码importsensorimportimageimportlcdimportKPUaskpuimporttimefromMaiximportFPIOA,GPIOimportgcfromfpioa_managerimportfmfromboardimportboard_infoimportutimefromboardimportboard_infofrommachineimportTimer,UART,PWM#语音importRELAY_DriveimportSYN6288_With_Busy_Drive#蜂鸣器importBEEP_3V3_Drive再次运行删除模型try:deltask_fddeltask_lddeltask_feexceptException:passtry:delaexceptException:passgc.collect()模型加载#内存中模型加载#task_fd=kpu.load(0x300000)#task_ld=kpu.load(0x400000)#task_fe=kpu.load(0x500000)#SD中模型加载task_fd=kpu.load("/sd/FaceDetection.smodel")#加载:人脸检测模型找到人脸task_ld=kpu.load("/sd/FaceLandmarkDetection.smodel")#加载:关键点检测模型从前面找到的人脸中找到人脸的眼睛鼻子和嘴巴的位置task_fe=kpu.load("/sd/FeatureExtraction.smodel")#加载:人脸特征提取模型--从一张人脸图片中得出一个特征值My-config#系统状态SYS_Status='END'#系统状态:状态可设置Class_State=0#上课状态:0--下课,1--上课#时间相关Sys_Time={'H':0,'M':0,'S':0}#系统时间可设置C_S_Time={'H':0,'M':0,'S':0}#课堂开始时间可设置C_C_Time={'H':0,'M':3,'S':0}#课堂持续时间可设置B_C_Time={'H':0,'M':0,'S':5}#铃声持续时间可设置'''默认下课默认不响铃开始时间-铃声时长铃声响开始时间上课开始时间+持续时间铃声响开始时间+持续时间+铃声时长重置:参考时间点--(开始时间-铃声时长)#人脸相关Operational_Order=['0','0']#操作指令#Operational_Order[0]#操作-1位:"0"-无操作;"1"-自动追加;"2"-指定追加;"3"-指定删除;"4"-自动删除#Operational_Order[1]#操作-2位:"0"-"9"指定追加编号;/指定删除编号Face_Index=""Face_Check_Monitor={'Index':'','State':0,'Thr_Freq':50,'Minu':0,'Real_Count':0,'Freq_Min':0}#Face_Check_Monitor['Index']--监测的人脸:编号--可设置#Face_Check_Monitor['State']--监测的人脸:状态--(Operation函数处理)(切换时,需清空)#Face_Check_Monitor['Thr_Freq']--监测的人脸:专注阈值--可设置#Face_Check_Monitor['Minu']--监测的人脸:已监测的分钟--timer操作(切换时,需清空,以及清空Tim1_Count)#Face_Check_Monitor['Real_Count']--监测的人脸:实时计数--timer操作(切换时,需清空,以及清空Tim1_Count)#Face_Check_Monitor['Freq_Min']--监测的人脸:频率(1分钟)--timer操作(切换时,需清空,以及清空Tim1_Count)#引用#Face_Check_Monitor['Index']=''#Face_Check_Monitor['State']=0#Face_Check_Monitor['Thr_Freq']=50#Face_Check_Monitor['Minu']=0#Face_Check_Monitor['Real_Count']=0#Face_Check_Monitor['Freq_Min']=0Last_Monitor_State=0configanchor=(1.889,2.5245,2.9465,3.94056,3.99987,5.3658,5.155437,6.92275,6.718375,9.01025)#anchorforfacedetectdst_point=[(44,59),(84,59),(64,82),(47,105),(81,105)]#standardfacekeypointpositionrecord_ftr=[]#人脸特征#record_ftrs=[]#建立字典--记录:人脸特征#names=['Mr.1','Mr.2','Mr.3','Mr.4','Mr.5','Mr.6','Mr.7','Mr.8','Mr.9','Mr.10']dic_record_ftrs={}#建立字典--记录:人脸特征ACCURACY=85#精度文字显示defdraw_string(img,x,y,text,color,scale,bg=None):ifbg:img.draw_rectangle(x-2,y-2,len(text)*8*scale+4,16*scale,fill=True,color=bg)img=img.draw_string(x,y,text,color=color,scale=scale)returnimgFace_Detect#最多录10张人脸单张人脸返回值Face_Num=10#人脸总Face_Exist=[0,0,0,0,0,0,0,0,0,0]#人脸存在数组,通信传输,供上位机查看,0-不存在,1-存在defFace_Detect(img):globaltask_fd,task_ld,task_fe#模型:人脸检测模型、关键点检测模型、人脸特征提取模型globala#一些函数的公用返回值globaldst_pointglobalACCURACY#精度globalimg_faceglobalrecord_ftr,dic_record_ftrs#人脸特征、人脸特征记录字典globalFace_Num#人脸总数globalFace_Exist#人脸存在数组,通信传输,供上位机查看globalOperational_Order#操作指令globalTim1_Count,Face_Check_MonitorglobalLast_Monitor_StateIndex=""#即将获得的人脸索引,也即名称:""未识别到,"X"未录入,"0"-"9"已录入的人脸编号record_ftr=[]#人脸特征curr_index_list=list(dic_record_ftrs.keys())#获取当前已录入人脸索引(名称)列表#更新人脸存在数组,用于通信iflen(curr_index_list)>0:forexist_countinrange(0,Face_Num):#0-9,不包含10,人脸总数:10ifstr(exist_count)incurr_index_list:Face_Exist[exist_count]=1else:Face_Exist[exist_count]=0else:forexist_countinrange(0,Face_Num):#0-9,不包含10,人脸总数:10Face_Exist[exist_count]=0code=kpu.run_yolo2(task_fd,img)#人脸检测模型找到人脸ifcode:#如果:找到人脸foriincode:#遍历人脸#Cutfaceandresizeto128x128a=img.draw_rectangle(i.rect())#画框face_cut=img.cut(i.x(),i.y(),i.w(),i.h())#人脸-裁剪face_cut_128=face_cut.resize(128,128)#人脸-裁剪-128*128a=face_cut_128.pix_to_ai()#同步`RGB888`内存块#a=img.draw_image(face_cut_128,(0,0))#Landmarkforface5pointsfmap=kpu.forward(task_ld,face_cut_128)#关键点检测模型从前面找到的人脸中找到人脸的眼睛鼻子和嘴巴的位置plist=fmap[:]#把运行的结果转换成了一个list对象le=(i.x()+int(plist[0]*i.w()-10),i.y()+int(plist[1]*i.h()))#左眼睛坐标re=(i.x()+int(plist[2]*i.w()),i.y()+int(plist[3]*i.h()))#右眼睛坐标nose=(i.x()+int(plist[4]*i.w()),i.y()+int(plist[5]*i.h()))#鼻子坐标lm=(i.x()+int(plist[6]*i.w()),i.y()+int(plist[7]*i.h()))#左嘴角坐标rm=(i.x()+int(plist[8]*i.w()),i.y()+int(plist[9]*i.h()))#右嘴角坐标a=img.draw_circle(le[0],le[1],4)#左眼睛--画圆a=img.draw_circle(re[0],re[1],4)#右眼睛--画圆a=img.draw_circle(nose[0],nose[1],4)#鼻子--画圆a=img.draw_circle(lm[0],lm[1],4)#左嘴角--画圆a=img.draw_circle(rm[0],rm[1],4)#右嘴角--画圆#alignfacetostandardpositionsrc_point=[le,re,nose,lm,rm]T=image.get_affine_transform(src_point,dst_point)a=image.warp_affine_ai(img,img_face,T)a=img_face.ai_to_pix()#同步`RGB888`内存块#a=img.draw_image(img_face,(128,0))del(face_cut_128)#删除人脸-裁剪-128*128#calculatefacefeaturevectorfmap=kpu.forward(task_fe,img_face)#人脸特征提取模型--从一张人脸图片中得出一个特征值feature=kpu.face_encode(fmap[:])#得到特征值reg_flag=False#识别Flag识别完毕(未使用)Max_Score=0.0#当前最大相似度scores=[]#当前所有相似度index_tmp=""#即将获得的人脸索引,也即名称:""未识别到,"X"未录入,"0"-"9"已录入的人脸编号forf_index_tmp_01incurr_index_list:#遍历已录入人脸索引列表score=kpu.face_compare(dic_record_ftrs[f_index_tmp_01],feature)#获取每个存储人脸的特征值ifMax_Score<score:Max_Score=scoreindex_tmp=f_index_tmp_01ifMax_Score>ACCURACY:#最大特征值大于精度检测到已录入的人脸Index=index_tmp#获取检测到的人脸索引,也即名称:获取索引a=img.draw_string(i.x(),i.y(),("%s:%2.1f"%(#识别到已录入的人脸,显示:人脸索引,相似度Index,Max_Score)),color=(0,255,0),scale=2)else:#最大特征值小于精度检测到未录入的人脸Index="X"#获取检测到的人脸索引,也即名称:未录入a=img.draw_string(i.x(),i.y(),("%s:%2.1f"%(#识别到未录入的人脸,显示:XX,相似度Index,Max_Score)),color=(255,0,0),scale=2)record_ftr=feature#保存人脸特征break#录入/删除等指令操作ifOperational_Order[0]=="0":#指令:无操作passelifOperational_Order[0]=="1":#指令:自动追加ifIndex=="X":#识别到未录入人脸if0<len(curr_index_list)<Face_Num:#未达到人脸总数curr_index_list_to_int=[int(x)forxincurr_index_list]#获取当前已录入人脸索引(名称)int列表ifmax(curr_index_list_to_int)<(Face_Num-1):#编号小于人脸总数-1dic_record_ftrs.setdefault(str(max(curr_index_list_to_int)+1),record_ftr)#插入新值eliflen(curr_index_list)==0:dic_record_ftrs.setdefault('0',record_ftr)#插入新值else:passelifOperational_Order[0]=="2":#指令:指定追加if'0'<=Operational_Order[1]<=str(Face_Num-1):ifIndex=="X":#识别到未录入人脸if0<len(curr_index_list)<Face_Num:#未达到人脸总数ifnotOperational_Order[1]incurr_index_list:dic_record_ftrs.setdefault(Operational_Order[1],record_ftr)#插入新值eliflen(curr_index_list)==0:dic_record_ftrs.setdefault(Operational_Order[1],record_ftr)#插入新值else:passelse:#非法指令passifOperational_Order[0]=="3":#指令:指定删除if'0'<=Operational_Order[1]<=str(Face_Num-1):iflen(curr_index_list)>0:ifOperational_Order[1]incurr_index_list:deldic_record_ftrs[Operational_Order[1]]elifOperational_Order[0]=="4":#指令:自动删除iflen(curr_index_list)>0:curr_index_list_to_int=[int(x)forxincurr_index_list]#获取当前已录入人脸索引(名称)int列表deldic_record_ftrs[str(max(curr_index_list_to_int))elifOperational_Order[0]=="5":#指令:指定监察(只有RUN才会传尽量值)if'0'<=Operational_Order[1]<=str(Face_Num-1)or(Operational_Order[1]==''):iflen(curr_index_list)>0:if(Operational_Order[1]incurr_index_list)or(Operational_Order[1]==''):#监察:存在或空ifFace_Check_Monitor['Index']!=Operational_Order[1]:#两次设置监察不同#设置监察编号Face_Check_Monitor['Index']=Operational_Order[1]#清空参数Tim1_Count=0Face_Check_Monitor['State']=0#清空:状态Face_Check_Monitor['Real_Count']=0#清空:实时计数Face_Check_Monitor['Freq_Min']=0#清空:频率Face_Check_Monitor['Minu']=0#清空:累计监测Last_Monitor_State=0else:passelse:passelse:#非法指令passOperational_Order[0]="0"#清空指令(最后统一清空指令)Operational_Order[1]="0"#清空编号(最后统一清空指令)returnIndexINITlcd.init()#初始化LCDsensor.reset()#复位摄像头sensor.set_pixformat(sensor.RGB565)#设置摄像头输出格式:屏幕使用的是RGB565sensor.set_framesize(sensor.QVGA)#设置摄像头输出帧大小:QVGA--320*240sensor.set_hmirror(1)#水平镜像sensor.set_vflip(1)#垂直镜像sensor.run(1)#图像捕捉功能控制:1--开始抓取图像0--停止抓取图像a=kpu.init_yolo2(task_fd,0.5,0.3,5,anchor)#因为使用了YOLO2模型,该模型有专门的初始化函数,调用初始化函数初始化模型img_lcd=image.Image()img_face=image.Image(size=(128,128))a=img_face.pix_to_ai()S-RELAY(语音控制#控制语音模块--常开接线(继电器不工作状态是开路)fm.register(board_info.PIN_S_Relay_01,fm.fpioa.GPIO0)#注册IOCtr_S_RELAYCtr_S_RELAY=GPIO(GPIO.GPIO0,GPIO.OUT)S_Relay=RELAY_Drive.RELAY(Ctr_S_RELAY,1)#构建对象:S_RelayS_Relay.Init()#初始化:Relay_01#S_Relay.ON()#继电器打开#S_Relay.OFF()#继电器打开SYN6288(withbusy)fm.register(board_info.PIN_S_BUSY,fm.fpioa.GPIO1)#映射IO-S_BUSY#PIN_S_BUSYS_BUSY=GPIO(GPIO.GPIO1,GPIO.PULL_UP)#注册IO-S_BUSYfm.register(board_info.PIN_SRXD_MCU_TX,fm.fpioa.UART1_TX,force=True)#映射串口引脚MCU-TXfm.register(board_info.PIN_STXD_MCU_RX,fm.fpioa.UART1_RX,force=True)#映射串口引脚MCU-RXuart_1=UART(UART.UART1,9600,read_buf_len=10240)VOICE=SYN6288_With_Busy_Drive.SYN6288(uart_1,S_BUSY)#构建对象,默认忙时为高电平VOICE.Init()time.sleep(1)S_Relay.ON()#开语音#播放语音#S_Relay.ON()#VOICE.Send_Data_Handle('warning')#指令:'warning'--请保持专注#读忙#VOICE.Read_Busy()#合成/语音--返回"IS_BUSY"否则"NO_BUSY"BEEPfm.register(board_info.PIN_Ctr_BEEP,fm.fpioa.GPIO2)#注册IO-Ctr_BEEPCtr_BEEP=GPIO(GPIO.GPIO2,GPIO.OUT)BEEP=BEEP_3V3_Drive.BEEP_3V3(Ctr_BEEP,0)#构建对象:BEEP,低电平响BEEP.Init()#初始化:BEEP#time.sleep_ms(1000)#BEEP.OFF()#蜂鸣器关闭#BEEP.ON()#蜂鸣器开启KEY#KEY_BOOT--未使用#KEY_SYSfm.register(board_info.PIN_KEY_SYS,fm.fpioa.GPIOHS1)#注册IO-KEY_SYSKEY_SYS=GPIO(GPIO.GPIOHS1,GPIO.IN,GPIO.PULL_UP)#构建KEY_SYS对象defexit_KEY_SYS_fun(KEY_SYS):#KEY_SYS中断回调函数globalSYS_StatusglobalTim1_Count,Face_Check_Monitor#切换END时,清空监察相关参数globalLast_Monitor_Statetime.sleep_ms(10)#消除抖动ifKEY_SYS.value()==0:#确认按键被按下ifSYS_Status=='END':SYS_Status='RUN'else:SYS_Status='END'#设置监察编号Face_Check_Monitor['Index']=''#清空参数Tim1_Count=0Face_Check_Monitor['State']=0#清空:状态Face_Check_Monitor['Real_Count']=0#清空:实时计数Face_Check_Monitor['Freq_Min']=0#清空:频率Face_Check_Monitor['Minu']=0#清空:累计监测Last_Monitor_State=0KEY_SYS.irq(exit_KEY_SYS_fun,GPIO.IRQ_FALLING,priority=2)#开启中断,下降沿触发#KEY1--未使用#KEY2--未使用#KEY3--未使用周期监测人脸频率Tim-1Tim1_Cout_ON_Or_OFF=1#测量开关:周期测量0--关,1开Tim1_Count=0#定时器计数变量TIM_1_THRESHOLD_MS=100#定时器周期变量(ms)#定时器回调函数周期TIM_1_THRESHOLD_MSmsdeffun_tim1(tim1):globalTim1_Cout_ON_Or_OFF#周期监测开关globalTim1_Count#计数变量globalFace_IndexglobalFace_Check_MonitorglobalLast_Monitor_StateifTim1_Cout_ON_Or_OFF==1:Tim1_Count=Tim1_Count+1ifFace_Check_Monitor['Index']!='':#存在监测ifFace_Check_Monitor['Index']==Face_Index:#监测到监测的人脸Face_Check_Monitor['Real_Count']=Face_Check_Monitor['Real_Count']+1#计数+1#到达1分钟ifTim1_Count>=60000//TIM_1_THRESHOLD_MS:#1分钟计时(时间到)Tim1_Count=0Face_Check_Monitor['Freq_Min']=Face_Check_Monitor['Real_Count']Face_Check_Monitor['Real_Count']=0Face_Check_Monitor['Minu']=Face_Check_Monitor['Minu']+1ifFace_Check_Monitor['Minu']>1000:Face_Check_Monitor['Minu']=1000#最大限制:连续监测1000minelse:#不存在监测Tim1_Count=0Face_Check_Monitor['State']=0#清空:状态Face_Check_Monitor['Real_Count']=0#清空:实时计数Face_Check_Monitor['Freq_Min']=0#清空:频率Face_Check_Monitor['Minu']=0#清空:累计监测Last_Monitor_State=0else:Tim1_Count=0Face_Check_Monitor['State']=0#清空:状态Face_Check_Monitor['Real_Count']=0#清空:实时计数Face_Check_Monitor['Freq_Min']=0#清空:频率Face_Check_Monitor['Minu']=0#清空:累计监测Last_Monitor_State=0#定时器1初始化,周期10mstim1=Timer(Timer.TIMER1,Timer.CHANNEL0,mode=Timer.MODE_PERIODIC,period=TIM_1_THRESHOLD_MS,callback=fun_tim1,priority=3)异常/正常#Operation(SYS_Status,Sys_Time,C_S_Time,C_C_Time,B_C_Time)defOperation(sys_status,sys_time,c_s_time,c_c_time,b_c_time):globalBEEP,S_Relay,VOICEglobalClass_StateglobalTim1_Cout_ON_Or_OFFglobalFace_Check_Monitor,Tim1_CountglobalLast_Monitor_State#课堂状态Class_State=0#默认值:下课beep_flag=0#默认值:蜂鸣器关#监察Face_Check_Monitor['State']=0#默认值:无监察结果ifsys_status=='RUN':#RUN#上课下课逻辑#if(not(-1insys_time))and(not(-1inc_s_time))and(not(-1inc_c_time))and(not(-1inb_c_time)):#时间合法#时间非法if(c_s_time['H']==0andc_s_time['M']==0andc_s_time['S']==0)or(c_c_time['H']==0andc_c_time['M']==0andc_c_time['S']==0):Tim1_Cout_ON_Or_OFF=0#停止监察人脸else:sys_time_s=sys_time['H']*60*60+sys_time['M']*60+sys_time['S']#系统时间转化秒c_s_time_s=c_s_time['H']*60*60+c_s_time['M']*60+c_s_time['S']#开始时间转化秒c_c_time_s=c_c_time['H']*60*60+c_c_time['M']*60+c_c_time['S']#持续时间转化秒b_c_time_s=b_c_time['H']*60*60+b_c_time['M']*60+b_c_time['S']#持续时间转化秒rec_start_s=c_s_time_s-b_c_time_s#初始时间节点(s):记成--开始时间-铃声时长ifrec_start_s<=sys_time_s<rec_start_s+b_c_time_s:#开始时间节点<-->开始时间节点+闹铃时长beep_flag=1#响铃Tim1_Cout_ON_Or_OFF=0#停止监察人脸elifrec_start_s+b_c_time_s<=sys_time_s<rec_start_s+b_c_time_s+c_c_time_s:#开始时间节点+闹铃时长<-->开始时间节点+闹铃时长+上课时长Class_State=1#上课Tim1_Cout_ON_Or_OFF=1#开始监察人脸elifrec_start_s+b_c_time_s+c_c_time_s<=sys_time_s<rec_start_s+b_c_time_s+c_c_time_s+b_c_time_s:#开始时间节点+闹铃时长+上课时长<-->开始时间节点+闹铃时长+上课时长+闹铃时长beep_flag=1#响铃Tim1_Cout_ON_Or_OFF=0#停止监察人脸else:Tim1_Cout_ON_Or_OFF=0#停止监察人脸#监察(上课监察)ifFace_Check_Monitor['Index']!='':#监察非空ifFace_Check_Monitor['Minu']>=1:#已经监察了1分钟ifFace_Check_Monitor['Freq_Min']==0:#频率为0(缺勤)Face_Check_Monitor['State']=1#缺勤elif0<Face_Check_Monitor['Freq_Min']<Face_Check_Monitor['Thr_Freq']:#小于设定频率(不专注)Face_Check_Monitor['State']=2#不专注else:#大于设定频率(专注)Face_Check_Monitor['State']=3#不专注else:#监测不到1分钟,此时没有频率pass#此时使用默认结果--0else:#监察为空#此时使用默认结果--0#清空参数Tim1_Count=0Face_Check_Monitor['State']=0#清空:状态Face_Check_Monitor['Real_Count']=0#清空:实时计数Face_Check_Monitor['Freq_Min']=0#清空:频率Face_Check_Monitor['Minu']=0#清空:累计监测Last_Monitor_State=0else:#END#此时使用默认结果--0Tim1_Cout_ON_Or_OFF=0#停止监察人脸#监测清空#设置监察编号Face_Check_Monitor['Index']=''#清空参数Tim1_Count=0Face_Check_Monitor['State']=0#清空:状态Face_Check_Monitor['Real_Count']=0#清空:实时计数Face_Check_Monitor['Freq_Min']=0#清空:频率Face_Check_Monitor['Minu']=0#清空:累计监测Last_Monitor_State=0#语音voice_flag=0#默认值:不播报if(Last_Monitor_State!=Face_Check_Monitor['State'])and(Face_Check_Monitor['State']==2):voice_flag=1else:voice_flag=0#执行ifbeep_flag==1:BEEP.ON()#蜂鸣器开启else:BEEP.OFF()#蜂鸣器关闭Last_Monitor_State=Face_Check_Monitor['State']ifvoice_flag==1:ifVOICE.Read_Busy()=='IS_BUSY':S_Relay.OFF()#关闭语音模块time.sleep_ms(15)#延时S_Relay.ON()#开启语音模块time.sleep_ms(15)#延时VOICE.Send_Data_Handle('warning')#指令:'warning'--请保持专注Tim-2Tim2_Count=0TIM_2_THRESHOLD_MS=1000#定时器回调函数周期1000msdeffun_tim2(tim2):globalTim2_CountglobalSys_Time#Tim2_Count=Tim2_Count+1if((Sys_Time['H']!=-1)or(Sys_Time['M']!=-1)or(Sys_Time['S']!=-1)):Sys_Time['S']=Sys_Time['S']+1ifSys_Time['S']>=60:Sys_Time['S']=0Sys_Time['M']=Sys_Time['M']+1ifSys_Time['M']>=60:Sys_Time['M']=0Sys_Time['H']=Sys_Time['H']+1ifSys_Time['H']>=24:Sys_Time['H']=0#定时器1初始化,周期10mstim2=Timer(Timer.TIMER2,Timer.CHANNEL0,mode=Timer.MODE_PERIODIC,period=TIM_2_THRESHOLD_MS,callback=fun_tim2,priority=3)HC-05fm.register(board_info.PIN_HRXD_MCU_TX,fm.fpioa.UART2_TX,force=True)#注册到内部IOfm.register(board_info.PIN_HTXD_MCU_RX,fm.fpioa.UART2_RX,force=True)#注册到内部IOHC_05=UART(UART.UART2,9600,8,1,0,timeout=1000,read_buf_len=4096)#inituartSend_Data='-'Rece_Data='-'Send_Data_HandledefSend_Data_Handle():#发送globalSYS_Status#(SS)系统状态globalFace_Exist#(FD)人脸存在globalFace_Check_Monitor#(FM)(FS)(FT)globalFace_Index#(FR)globalClass_State#(C)globalC_S_Time#(CS)globalC_C_Time#(CC)globalB_C_Time#(BC)Send_Data='+SS%sFD%1d%1d%1d%1d%1d%1d%1d%1d%1d%1dFM%sFR%sFS%1dFT%03dC%1dCS%02d%02d%02dCC%02d%02d%02dBC%02d%02d%02d-'%(SYS_Status,Face_Exist[0],Face_Exist[1],Face_Exist[2],Face_Exist[3],Face_Exist[4],Face_Exist[5],Face_Exist[6],Face_Exist[7],Face_Exist[8],Face_Exist[9],Face_Check_Monitor['Index'],Face_Index,Face_Check_Monitor['State'],Face_Check_Monitor['Thr_Freq'],Class_State,C_S_Time['H'],C_S_Time['M'],C_S_Time['S'],C_C_Time['H'],C_C_Time['M'],C_C_Time['S'],B_C_Time['H'],B_C_Time['M'],B_C_Time['S'])HC_05.write(Send_Data)Tim-0TIM_0_THRESHOLD_MS=1000#定时器回调函数周期1000msdeffun_tim0(tim0):Send_Data_Handle()#定时器1初始化,周期10mstim0=Timer(Timer.TIMER0,Timer.CHANNEL0,mode=Timer.MODE_PERIODIC,period=TIM_0_THRESHOLD_MS,callback=fun_tim0,priority=1)Rece_Data_HandledefRece_Data_Handle():globalRece_DataglobalSYS_StatusglobalSys_TimeglobalC_S_TimeglobalC_C_TimeglobalB_C_TimeglobalFace_Check_Monitor,Tim1_Count#设置人脸专注频率阈值,以及切换END时,清空字典globalLast_Monitor_StateglobalOperational_Order#Operational_Order[0]#操作-1位:"0"-无操作;"1"-自动追加;"2"-指定追加;"3"-指定删除;"4"-自动删除#Operational_Order[1]#操作-2位:"0"-"9"指定追加编号;/指定删除编号tmp=HC_05.read()ifnottmpisNone:print(tmp)Rece_Data=tmp.decode()print(Rece_Data)ifRece_Data[0]=='+'andRece_Data[-1]=='-':print("
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小红书:小红书官方直播间三招教你账户成长
- 九年级化学下册 第九章 现在生活与化学9.2 化学合成材料说课稿 (新版)粤教版
- 2024秋九年级语文上册 第六单元 22《范进中举》教学设计 新人教版
- 八年级道德与法治下册 第一单元 坚持宪法至上 第一课 维护宪法权威 第1框 公民权利的保障书教案 新人教版
- 2024-2025学年高中历史 第四单元 雅尔塔体制下的“冷战”与和平 第15课“冷战”的形成(1)教学教案 岳麓版选修3
- 2024-2025学年高中语文 第四单元 古代人物传记 第12课 苏武传教案 新人教版必修4
- 2023三年级英语下册 Unit 1 Let's go to school Lesson 1教案 人教精通版(三起)
- 租赁桥面板合同(2篇)
- 颐和园课件 总结
- 苏教版江苏省东台市2023-2024学年高二上学期期末数学试题
- 人教精通版(2024)三年级上册英语全册教学设计
- 三高共管六病同防医防融合管理制度
- 人教新课标一年级数学上册 5.5 《加减混合》说课稿
- DL-T 438-2023 火力发电厂金属技术监督规程
- 《爬天都峰》教学课件(第二课时)
- 道路货物运输企业安全风险分级管控工作方案
- 人教版2024-2025学年度七年级上册数学第四章(整式的加减)单元测试卷
- 南通2024年江苏南通大学招聘专职辅导员25人(第一批)笔试历年典型考题及考点附答案解析
- 学习《国有企业管理人员处分条例》研讨发言材料8篇
- 2024-2030年中国循环泵市场运营态势分析及投资前景预测报告
- 自投户用光伏合同
评论
0/150
提交评论