Spaces:
Configuration error
Configuration error
| """ | |
| @author: Santhosh R | |
| """ | |
| import cv2, os | |
| import shutil | |
| import csv | |
| import numpy as np | |
| from PIL import Image, ImageTk | |
| import pandas as pd | |
| name , Id = '','' | |
| dic = { | |
| 'Name' : name, | |
| 'Ids' : Id | |
| } | |
| def store_data(): | |
| global name,Id,dic | |
| name = str(input("Enter Name ")) | |
| Id = str(input("Enter Id ")) | |
| dic = { | |
| 'Ids' : Id, | |
| 'Name': name | |
| } | |
| c = dic | |
| return c | |
| #Fucntion to check if entered ID is number or not | |
| def is_number(s): | |
| try: | |
| float(s) | |
| return True | |
| except ValueError: | |
| pass | |
| try: | |
| import unicodedata | |
| unicodedata.numeric(s) | |
| return True | |
| except (TypeError, ValueError): | |
| pass | |
| return False | |
| def TakeImages(): | |
| dict1 = store_data() | |
| #print(dict1) | |
| #name = "Santhu" | |
| #Id = '1' | |
| if (name.isalpha() and is_number(Id)): | |
| #Checking Id if it is 1 we are rewring the profile else just updating csv | |
| if Id == '1': | |
| fieldnames = ['Name','Ids'] | |
| with open('Profile.csv','w') as f: | |
| writer = csv.DictWriter(f, fieldnames =fieldnames) | |
| writer.writeheader() | |
| writer.writerow(dict1) | |
| else: | |
| fieldnames = ['Name','Ids'] | |
| with open('Profile.csv','a+') as f: | |
| writer = csv.DictWriter(f, fieldnames =fieldnames) | |
| #writer.writeheader() | |
| writer.writerow(dict1) | |
| cam = cv2.VideoCapture(0) | |
| #Haarcascade file for detctionof face | |
| harcascadePath = "hh.xml" | |
| detector = cv2.CascadeClassifier(harcascadePath) | |
| sampleNum = 0 | |
| while (True): | |
| ret, img = cam.read() | |
| gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) | |
| faces = detector.detectMultiScale(gray, 1.3, 5) | |
| for (x, y, w, h) in faces: | |
| cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 3) | |
| # Incrementing sample number | |
| sampleNum = sampleNum + 1 | |
| # Saving the captured face in the dataset folder TrainingImage | |
| cv2.imwrite("TrainingImage\ " + name + "." + Id + '.' + str(sampleNum) + ".jpg", gray[y:y + h, x:x + w]) | |
| # display the frame | |
| cv2.imshow('Cpaturing Face for Login ', img) | |
| # wait for 100 miliseconds | |
| if cv2.waitKey(100) & 0xFF == ord('q'): | |
| break | |
| # break if the sample number is morethan 60 | |
| elif sampleNum > 60: | |
| break | |
| cam.release() | |
| cv2.destroyAllWindows() | |
| res = "Images Saved for Name : " + name + " with ID " + Id | |
| print(res) | |
| print(' Images save location is TrainingImage\ ') | |
| else: | |
| if(name.isalpha()): | |
| print('Enter Proper Id') | |
| elif(is_number(Id)): | |
| print('Enter Proper name') | |
| else: | |
| print('Enter Proper Id and Name') | |
| TakeImages() | |