skt
This commit is contained in:
		
							parent
							
								
									0f37b63456
								
							
						
					
					
						commit
						508f39fe8d
					
				
					 3 changed files with 35813 additions and 0 deletions
				
			
		
							
								
								
									
										36
									
								
								face_recognition/face_recog_2/datacollect.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								face_recognition/face_recog_2/datacollect.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,36 @@
 | 
				
			||||||
 | 
					import cv2
 | 
				
			||||||
 | 
					import os
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					video = cv2.VideoCapture(0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					facedectect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					count = 0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					nameID = str(input("Enter Your Name: ")).lower()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					path = 'images/' + nameID
 | 
				
			||||||
 | 
					isExist = os.path.exists(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if isExist:
 | 
				
			||||||
 | 
					    print("Name Already Taken")
 | 
				
			||||||
 | 
					    nameID = str(input("Enter Your Name Again"))
 | 
				
			||||||
 | 
					else:
 | 
				
			||||||
 | 
					    os.makedirs(path)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while True:
 | 
				
			||||||
 | 
					    ret, frame = video.read()
 | 
				
			||||||
 | 
					    faces = facedectect.detectMultiScale(frame,1.3,5)
 | 
				
			||||||
 | 
					    for x,y,w,h in faces:
 | 
				
			||||||
 | 
					        count = count+1
 | 
				
			||||||
 | 
					        name = './images/' + nameID + '/' + str(count) + '.jpg'
 | 
				
			||||||
 | 
					        print("Creating Images............" + name)
 | 
				
			||||||
 | 
					        cv2.imwrite(name, frame[y:y+h,x:x+w])
 | 
				
			||||||
 | 
					        cv2.rectangle(frame, (x,y), (x+w, y+h), (0,255,0), 3)
 | 
				
			||||||
 | 
					    cv2.imshow("WindowFrame", frame)
 | 
				
			||||||
 | 
					    k = cv2.waitKey(1)
 | 
				
			||||||
 | 
					    if k == ord('q'):
 | 
				
			||||||
 | 
					        break
 | 
				
			||||||
 | 
					video.release()
 | 
				
			||||||
 | 
					cv2.destroyAllWindows()
 | 
				
			||||||
							
								
								
									
										35712
									
								
								face_recognition/face_recog_2/haarcascade_frontalface_default.xml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35712
									
								
								face_recognition/face_recog_2/haarcascade_frontalface_default.xml
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										65
									
								
								face_recognition/face_recog_2/test.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								face_recognition/face_recog_2/test.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,65 @@
 | 
				
			||||||
 | 
					import tensorflow as tf
 | 
				
			||||||
 | 
					from tensorflow import keras
 | 
				
			||||||
 | 
					import numpy as np
 | 
				
			||||||
 | 
					import cv2
 | 
				
			||||||
 | 
					from keras.models import load_model
 | 
				
			||||||
 | 
					import numpy as np
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					facedectect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					cap = cv2.VideoCapture(0)
 | 
				
			||||||
 | 
					cap.set(3,640)
 | 
				
			||||||
 | 
					cap.set(4,480)
 | 
				
			||||||
 | 
					font = cv2.FONT_HERSHEY_COMPLEX
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					model = load_model('keras_model.h5', compile= False)
 | 
				
			||||||
 | 
					def get_classname(classNo):
 | 
				
			||||||
 | 
					    if classNo == 0:
 | 
				
			||||||
 | 
					        return "Siwat"
 | 
				
			||||||
 | 
					    elif classNo == 1:
 | 
				
			||||||
 | 
					        return "Sukatat"
 | 
				
			||||||
 | 
					    elif classNo == 2:
 | 
				
			||||||
 | 
					        return "Sorapat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					while True:
 | 
				
			||||||
 | 
					    sucess, imgOriginal = cap.read()
 | 
				
			||||||
 | 
					    faces = facedectect.detectMultiScale(imgOriginal,1.3,5)
 | 
				
			||||||
 | 
					    for x,y,w,h in faces:
 | 
				
			||||||
 | 
					        crop_img = imgOriginal[y:y+h, x:x+h]
 | 
				
			||||||
 | 
					        img = cv2.resize(crop_img, (224,224))
 | 
				
			||||||
 | 
					        img = img.reshape(1, 224, 224, 3)
 | 
				
			||||||
 | 
					        prediction = model.predict(img)
 | 
				
			||||||
 | 
					        classIndex = np.argmax(prediction,axis=1)
 | 
				
			||||||
 | 
					        #classIndex = model.predict(img)
 | 
				
			||||||
 | 
					        probabilityValue = np.amax(prediction)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if classIndex == 0:
 | 
				
			||||||
 | 
					            cv2.rectangle(imgOriginal, (x,y), (x+w, y+h), (0,255,0), 2)
 | 
				
			||||||
 | 
					            cv2.rectangle(imgOriginal, (x,y-40), (x+w, y), (0,255,0), -2)
 | 
				
			||||||
 | 
					            cv2.putText(imgOriginal, str(get_classname(classIndex)), (x,y-10), font, 0.75, (0,255,0), 2, cv2.LINE_AA, False)
 | 
				
			||||||
 | 
					            print(str(get_classname(classIndex)))
 | 
				
			||||||
 | 
					        elif classIndex == 1:
 | 
				
			||||||
 | 
					            cv2.rectangle(imgOriginal, (x,y), (x+w, y+h), (0,255,0), 2)
 | 
				
			||||||
 | 
					            cv2.rectangle(imgOriginal, (x,y-40), (x+w, y), (0,255,0), -2)
 | 
				
			||||||
 | 
					            cv2.putText(imgOriginal, str(get_classname(classIndex)), (x,y-10), font, 0.75, (0,255,0), 2, cv2.LINE_AA, False)
 | 
				
			||||||
 | 
					            print(str(get_classname(classIndex)))
 | 
				
			||||||
 | 
					        elif classIndex == 2:
 | 
				
			||||||
 | 
					            cv2.rectangle(imgOriginal, (x,y), (x+w, y+h), (0,255,0), 2)
 | 
				
			||||||
 | 
					            cv2.rectangle(imgOriginal, (x,y-40), (x+w, y), (0,255,0), -2)
 | 
				
			||||||
 | 
					            cv2.putText(imgOriginal, str(get_classname(classIndex)), (x,y-10), font, 0.75, (0,255,0), 2, cv2.LINE_AA, False)
 | 
				
			||||||
 | 
					            print(str(get_classname(classIndex)))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        cv2.putText(imgOriginal, str(round(probabilityValue*100, 2))+ "%", (180,75), font ,0.75, (0,255,0), 2, cv2.LINE_AA, False)
 | 
				
			||||||
 | 
					    cv2.imshow("Result", imgOriginal)
 | 
				
			||||||
 | 
					    k = cv2.waitKey(1)
 | 
				
			||||||
 | 
					    if k == ord('q'):
 | 
				
			||||||
 | 
					        break
 | 
				
			||||||
 | 
					video.release()
 | 
				
			||||||
 | 
					cv2.destroyAllWindows()
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue