In this video lesson we show how to recognize and identify faces in live video on the Jestson Nano using OpenCV. We have a separate program that trains the system based on known faces, and this work was described in an earlier lesson in this series. Below is a copy of the code we develop in the video above.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | import face_recognition import cv2 import os import pickle import time print(cv2.__version__) Encodings=[] Names=[] with open('train.pkl','rb') as f: Names=pickle.load(f) Encodings=pickle.load(f) font=cv2.FONT_HERSHEY_SIMPLEX cam= cv2.VideoCapture(1) while True: _,frame=cam.read() frameSmall=cv2.resize(frame,(0,0),fx=.25,fy=.25) frameRGB=cv2.cvtColor(frameSmall,cv2.COLOR_BGR2RGB) facePositions=face_recognition.face_locations(frameRGB,model='cnn') allEncodings=face_recognition.face_encodings(frameRGB,facePositions) for (top,right,bottom,left),face_encoding in zip(facePositions,allEncodings): name='Unkown Person' matches=face_recognition.compare_faces(Encodings,face_encoding) if True in matches: first_match_index=matches.index(True) name=Names[first_match_index] top=top*4 right=right*4 bottom=bottom*4 left=left*4 cv2.rectangle(frame,(left,top),(right, bottom),(0,0,255),2) cv2.putText(frame,name,(left,top-6),font,.75,(0,0,255),2) cv2.imshow('Picture',frame) cv2.moveWindow('Picture',0,0) if cv2.waitKey(1)==ord('q'): break cam.release() cv2.destroyAllWindows() |