1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 摄像头人脸检测的树莓派指纹识别系统

摄像头人脸检测的树莓派指纹识别系统

时间:2024-07-04 13:43:23

相关推荐

摄像头人脸检测的树莓派指纹识别系统

摄像头人脸检测的树莓派指纹识别系统

前言:此项目主要用了摄像头、指纹识别、继电器、Led模块等设备。用于实现智能门锁功能,即摄像头检测到人来之后,打开继电器给指纹模块供电,led显示文字。

代码:

import binasciiimport serialimport serial.tools.list_portsimport timeimport cv2import Adafruit_GPIO.SPI as SPIimport Adafruit_SSD1306from PIL import Imagefrom PIL import ImageDrawfrom PIL import ImageFontcap = cv2.VideoCapture(0)face_cascade = cv2.CascadeClassifier(r'haarcascade_frontalface_default.xml') face_cascade.load('./haarcascade_frontalface_default.xml')def recv(serial):while True:data = serial.read_all()if data == '':continueelse:breakreturn dataif __name__ == '__main__':RST = 24DC = 23SPI_PORT = 0SPI_DEVICE = 0disp = Adafruit_SSD1306.SSD1306_128_32(rst=RST)disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)disp.begin()width = disp.widthheight = disp.heightdisp.clear()disp.display()image = Image.new('1', (width, height))draw = ImageDraw.Draw(image)font = ImageFont.load_default()draw.text((10,30),'welcome to yjc home',font = font,fill=255)disp.image(image)disp.display()time.sleep(2)while (True):ret, frame = cap.read() faces = face_cascade.detectMultiScale(frame, scaleFactor=1.15, minNeighbors=5, minSize=(5, 5)) for (x,y,w,h) in faces:cv2.rectangle(frame, (x,y),(x+w, y+h ), (0, 255, 0),2)draw.rectangle((0,0,width,height), outline=0, fill=0) disp.display()draw.text((10,30), 'waiting for people', font=font, fill =255)disp.image(image)disp.display()cv2.imshow('face', frame)if cv2.waitKey(1)& 0xFF == ord('q'):breakprint("waiting for people")if len(faces)>0:breakcap.release() cv2.destroyAllWindows()serial = serial.Serial('/dev/ttyUSB0', 57600, timeout=0.5) #/dev/ttyUSB0if serial.isOpen() :draw.rectangle((0,0,width,height), outline=0, fill=0)disp.display()draw.text((10,30), 'open suceessful', font = font, fill= 255)time.sleep(2)disp.image(image)disp.display()else :draw.rectangle((0,0,width,height), outline=0, fill=0)disp.dispaly()draw.text((10,30), 'open faild', font = font, fill = 255)disp.image(image)disp.display()while True:a = 'EF 01 FF FF FF FF 01 00 03 01 00 05'd = bytes.fromhex(a)serial.write(d)time.sleep(1)data =recv(serial)if data != b'' :data_con = str(binascii.b2a_hex(data))[20:22]if(data_con == '02'):draw.rectangle((0,0,width,height), outline=0, fill=0)disp.display()draw.text((20,30),'please enter finger', font=font, fill =255)disp.image(image)disp.display()time.sleep(2)elif(data_con == '00'):draw.rectangle((0,0,width,height), outline=0, fill=0)disp.display()draw.text((20,30),'load suceessful',font = font, fill =255)disp.image(image)disp.display()buff = 'EF 01 FF FF FF FF 01 00 04 02 01 00 08'buff = bytes.fromhex(buff)serial.write(buff)time.sleep(1)buff_data = recv(serial)buff_con = str(binascii.b2a_hex(buff_data))[20:22]if(buff_con == '00'):draw.rectangle((0,0,width,height), outline=0, fill=0)disp.display()draw.text((20,30), 'creat feature suceessful',font = font , fill = 255)disp.image(image)disp.display()time.sleep(2)serch = 'EF 01 FF FF FF FF 01 00 08 04 01 00 00 00 64 00 72'serch = bytes.fromhex(serch)serial.write(serch)time.sleep(1)serch_data = recv(serial)serch_con = str(binascii.b2a_hex(serch_data))[20:22]if (serch_con == '09'):draw.rectangle((0,0,width,height), outline=0, fill=0)disp.display()draw.text((10,30),'finger is not matching',font = font,fill =255)disp.image(image)disp.display()time.sleep(2)elif(serch_con == '00'):draw.rectangle((0,0,width,height), outline=0, fill=0)disp.display()draw.text((10,30),'finger is matching',font=font,fill = 255)disp.image(image)disp.display()time.sleep(2)serial.close()disp.image(image)disp.display()exit()else:draw.rectangle((0,0,width,height), outline=0, fill=0)disp.display()draw.text((30,30),'faild',font=font,fill = 255)disp.image(image)disp.display()

效果展示:

视频后续添加

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。