赞
踩
/
/
/
/
/
/
实现步骤:上电,首先实现的功能是人脸识别,同时也可以进入人脸录取后在进行识别,该部分代码基于Openmv(Python),
通过按键Key0 进入录取人脸,按键Key1进入人脸识别,如若识别成功,通过串口返回识别人的名称。接下来是指纹模块的功能,这里不做简述,有关过程,请看链接。(该功能目前比较单一,还有待改进)
STM32+AS608的连接还是参考上面的连接,主要讲Openmv+Stm32
Openmv Rx — stm32 TX
Openmv TX — stm32 RX
Openmv GND — stm32 GND
Openmv VIN ---- stm32 5V (注意这里连接的是5V),因为Openmv的供电由该引脚提供。
STM32与Openmv连接 人脸识别代码
void Face_recognition(void) { u8 key; u8 t3; u8 number=0; //printf("/*********************************************人脸识别*********************************************/\r\n"); //printf("/**************************************************************************************************/\r\n"); //printf("/**************************************************************************************************/\r\n"); while(1) { key=KEY_Scan(0); if(key==KEY0_PRES) { printf("1"); } if(key==KEY1_PRES) { printf("2"); break; } /* if(key==WKUP_PRES) { break; } */ } while(1) { if(USART_RX_STA&0x8000) { number=USART_RX_STA&0x3fff;//得到此次接收到的数据长度 for(t3=0;t3<number;t3++) { USART1->DR=USART_RX_BUF[t3]; while((USART1->SR&0X40)==0);//等待发送结束 } printf("\r\n\r\n");//插入换行 USART_RX_STA=0; } if(number>0) { break; } } }
Openmv代码-人脸识别及人脸录取代码
""" 作者: SYM 时间: 2019年10月19日22:00 代码功能:与STM32使用,进行stm32通过串口发送消息给openmv,openmv收到信息后 进行人脸识别操作,并将结果传送回STM32单片机进行应答! 个人博客:https://blog.csdn.net/sssyyymm V1.0版本(有待改进) """ import sensor, time, image, pyb from pyb import UART RED_LED_PIN = 1 BLUE_LED_PIN = 3 uart = UART(1,115200,timeout_char=1000) data=bytes([0x0d,0x0a]) #uart.write("Now begin Face_recognition!\r\n") #uart.write(data) def face_recognition(): sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.GRAYSCALE) # or sensor.GRAYSCALE sensor.set_framesize(sensor.B128X128) # or sensor.QQVGA (or others) sensor.set_windowing((92,112)) sensor.skip_frames(10) # Let new settings take affect. sensor.skip_frames(time = 5000) #等待5s #SUB = "s1" NUM_SUBJECTS = 3 #图像库中不同人数,一共6人 NUM_SUBJECTS_IMGS = 10 #每人有20张样本图片 # 拍摄当前人脸。 img = sensor.snapshot() #img = image.Image("face/%s/1.pgm"%(SUB)) d0 = img.find_lbp((0, 0, img.width(), img.height())) #d0为当前人脸的lbp特征 img = None pmin = 999999 num=0 for s in range(1, NUM_SUBJECTS+1): dist = 0 for i in range(2, NUM_SUBJECTS_IMGS+1): img = image.Image("face/s%d/%d.pgm"%(s, i)) d1 = img.find_lbp((0, 0, img.width(), img.height())) #d1为第s文件夹中的第i张图片的lbp特征 dist += image.match_descriptor(d0, d1)#计算d0 d1即样本图像与被检测人脸的特征差异度。 print("Average dist for subject %d: %d"%(s, dist/NUM_SUBJECTS_IMGS)) #pmin = min(pmin, dist/NUM_SUBJECTS_IMGS, s)#特征差异度越小,被检测人脸与此样本更相似更匹配。 if (dist/NUM_SUBJECTS_IMGS)<pmin: pmin=(dist/NUM_SUBJECTS_IMGS) num=s print(pmin) print(num) # num为当前最匹配的人的编号。 #uart.write(str(num)) if num==1: uart.write("You are SYM!") uart.write(data) elif num==2: uart.write("You are gt!") uart.write(data) elif num==3: uart.write("You are LWZ!") uart.write(data) def take_photos(): sensor.reset() # Initialize the camera sensor. sensor.set_pixformat(sensor.GRAYSCALE) # or sensor.GRAYSCALE sensor.set_framesize(sensor.B128X128) # or sensor.QQVGA (or others) sensor.set_windowing((92,112)) sensor.skip_frames(10) # Let new settings take affect. sensor.skip_frames(time = 2000) num2 = 3 #设置被拍摄者序号,第一个人的图片保存到s1文件夹,第二个人的图片保存到s2文件夹,以此类推。每次更换拍摄者时,修改num值。 n = 10 #设置每个人拍摄图片数量。 #连续拍摄n张照片,每间隔3s拍摄一次。 while(n): #红灯亮 pyb.LED(RED_LED_PIN).on() sensor.skip_frames(time = 2000) # Give the user time to get ready.等待3s,准备一下表情。 #红灯灭,蓝灯亮 pyb.LED(RED_LED_PIN).off() pyb.LED(BLUE_LED_PIN).on() #保存截取到的图片到SD卡 print(n) sensor.snapshot().save("face/s%s/%s.pgm" % (num2, n) ) # or "example.bmp" (or others) n -= 1 pyb.LED(BLUE_LED_PIN).off() print("Done! Reset the camera to see the saved image.") #uart.write(str(num)) if __name__=='__main__': while(1): if uart.any(): num1 =uart.readline().decode() num1 = int(num1) if(num1==1): print(num1) take_photos() elif(num1==2): print(num1) face_recognition() break
主要代码,其他代码不再展示,整个工程上传到下载:
通过按键1录取人脸。按键2进行人脸对比,输出人脸信息,然后进入指纹部分
接下来是指纹模块的
1,openmv与stm32直接通讯,通过stm32串口收发,接收openmv以及发送到openmv。
2.as608指纹模块的 驱动程序
3.待改进点:采用中断运行,不占用处理器资源,添加蜂鸣器响应,
4.增加WIFi模块,传送到移动端安卓,进行远程控制
5,上传指纹和人脸数据库信息。
等等。。
欢迎大家在下面评论谈论
为方便没有积分的用户下载,将资源放在百度网盘,有需要自己下载哈!!!感谢支持!
注:V1版本是只有STM32+As608,V2版本是STM32+As608+openmv.大家结合需求自己下载
链接:https://pan.baidu.com/s/16viOu4Uu4r0bOjRD1KTd4g
提取码:cbg1
复制这段内容后打开百度网盘手机App,操作更方便哦
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。