merge #5
| @ -41,7 +41,6 @@ void loop() { | ||||
| 
 | ||||
|   if (distance < 70) UltraOK = true;   | ||||
|   else UltraOK = false; | ||||
| 
 | ||||
|   if(digitalRead(ProxSensor) == LOW ) IROK = true; | ||||
|   else  IROK = false; | ||||
|   char pi = 'N'; | ||||
|  | ||||
							
								
								
									
										86
									
								
								main.py
									
									
									
									
									
								
							
							
						
						
									
										86
									
								
								main.py
									
									
									
									
									
								
							| @ -1,6 +1,7 @@ | ||||
| 
 | ||||
| from time import sleep | ||||
| from io import BytesIO | ||||
| from PIL import Image | ||||
| import os | ||||
| import serial | ||||
| import sys | ||||
| @ -42,20 +43,19 @@ def init(): | ||||
| 		 | ||||
| 	else:  | ||||
| 		print('closing') | ||||
| 	#else: | ||||
| 		#print('Sensors not Satisfied') | ||||
| 
 | ||||
| def start( camera, face_cascade): | ||||
| 	j = 0 | ||||
| 	rawCapture = PiRGBArray(camera) | ||||
| 	#camera.framerate = 32 | ||||
| 	#rawCapture = PiRGBArray(camera, size=(640, 480)) | ||||
| 	#for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):	 | ||||
| 	face_recognizer = cv2.createLBPHFaceRecognizer() | ||||
| 	face_recognizer.load('faces/h') | ||||
| 	names = loadNames() | ||||
| 	while 1: | ||||
| 	#try: | ||||
| 		#camera.capture('img.jpg') | ||||
| 		#img = cv2.imread('img.jpg',1) | ||||
| 		camera.capture(rawCapture, format="bgr") | ||||
| 		try: | ||||
| 			camera.capture(rawCapture, format="bgr") | ||||
| 		except: | ||||
| 			print('[ Error ] Can not capture image. Restarting..') | ||||
| 			init() | ||||
| 		img = rawCapture.array | ||||
| 		gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | ||||
| 		faces = face_cascade.detectMultiScale(gray, 1.3,5) | ||||
| @ -63,37 +63,40 @@ def start( camera, face_cascade): | ||||
| 		for (x,y,w,h) in faces: | ||||
| 			i += 1 | ||||
| 			j += 1 | ||||
| 			roi_gray = gray[y:y+h, x:x+w] | ||||
| 			roi_color = img[y:y+h, x:x+w] | ||||
| 			person = recognize(roi_gray) | ||||
| 			if not person == 'unknown': | ||||
| 				OpenShifter() | ||||
| 				print('Sending to Arduino!') | ||||
| 			try: | ||||
| 				roi_gray = gray[y:y+h, x:x+w] | ||||
| 				roi_color = img[y:y+h, x:x+w] | ||||
| 				person = recognize(roi_gray, face_recognizer, names) | ||||
| 				cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) | ||||
| 				cv2.putText(img, person, (x, y), cv2.FONT_HERSHEY_PLAIN, 1.7, (255, 0, 0), 2) | ||||
| 			except: | ||||
| 				print('[ Error ] Recognition fail') | ||||
| 			if person == 'unknown': | ||||
| 				print('Found unknown person') | ||||
| 				try: | ||||
| 					RGBImage = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) | ||||
| 					image = Image.fromarray(RGBImage) | ||||
| 					image.save('lastUnknown.png') | ||||
| 				except: | ||||
| 					print('[ Error ] Saving unkown fail') | ||||
| 			else: | ||||
| 				print('Found unknown face') | ||||
| 			cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) | ||||
| 			cv2.putText(img, person, (x, y), cv2.FONT_HERSHEY_PLAIN, 1.7, (255, 0, 0), 2) | ||||
| 			 | ||||
| 				print('Found '+person) | ||||
| 				OpenShifter() | ||||
| 		cv2.imshow('image',img)  | ||||
| 		cv2.waitKey(100) | ||||
| 		cv2.waitKey(1) | ||||
| 		rawCapture.truncate(0) | ||||
| 		if cv2.waitKey(1) & 0xFF == ord('q'): | ||||
| 			cv2.destroyAllWindows() | ||||
| 			break | ||||
| 
 | ||||
| 		#except: | ||||
| 			#print('[ Error ] Unexpected exception') | ||||
| 			#print('Closing') | ||||
| 			#break | ||||
| def recognize(image,face_recognizer, names): | ||||
| 	 | ||||
| def recognize(image): | ||||
| 	names = loadNames() | ||||
| 	face_recognizer = cv2.createLBPHFaceRecognizer() | ||||
| 	face_recognizer.load('faces/m') | ||||
| 	img = image.copy() | ||||
| 	label= face_recognizer.predict(img) | ||||
| 	if label[1] > 100: | ||||
| 		print(str(label)) | ||||
| 	try: | ||||
| 		img = image.copy() | ||||
| 		label= face_recognizer.predict(img) | ||||
| 	except: | ||||
| 		print('[ Error ] Error in Recognize() function') | ||||
| 	if label[1] > 70: | ||||
| 		return 'unknown' | ||||
| 	else: | ||||
| 		print(str(label) + ' >>'+names[label[0]]) | ||||
| @ -106,13 +109,22 @@ def OpenShifter(): | ||||
| 		ser.write('o') | ||||
| 		ser.close() | ||||
| 	except Exception as ex: | ||||
| 		print('[ Error ] Can not connect to Arduino at /dev/ttyUSB1 ..') | ||||
| 		print('[ Error ] Can not connect to Arduino at /dev/ttyUSB0 ..') | ||||
| 		try: | ||||
| 			ser = serial.Serial('/dev/ttyUSB1',9600) | ||||
| 			ser.open() | ||||
| 			ser.write('o') | ||||
| 			ser.close() | ||||
| 		except: | ||||
| 			print('[ Error ] Can not connect to Arduino at /dev/ttyUSB1 ..') | ||||
| 			 | ||||
| def loadNames(): | ||||
| 	 | ||||
| 	with open("faces/names.json", "r") as read_file: | ||||
| 		data = json.load(read_file) | ||||
| 		return list(data) | ||||
| 	try: | ||||
| 		with open("faces/names.json", "r") as read_file: | ||||
| 			data = json.load(read_file) | ||||
| 			return list(data) | ||||
| 	except: | ||||
| 		print('[ Error ] Error in loadNames() function') | ||||
| 
 | ||||
| 
 | ||||
| init() | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user