def scan(): global AddQ, personMTS, nameMTS, feet nameMTS = feet.get() #str(random.randint(1, 100)) print("********") print("n " + nameMTS) db.add_person(nameMTS) answer, personMTS = db.search_person(nameMTS) FaceAlgo.name(nameMTS, personMTS) CameraWindow2.WindowsCamera(cap, True) regreg.destroy()
def make_all_person(): print("Выбираем все лица из noname. И делаем разнос по персонам") #начинаем перебор всех лиц, по похожести, и сравниваем с уж созданными персонами res, noname = db.search_person("noname") print( "распределяем все лица по персонам. если уникальное, то создаем новую персону" ) FaceAlgo.load_all_faces() #перебираем все лица в noname, если нет похожих людей, то создаем новых faces, data = db.search_faces(noname) #print((data[0])) new_face_counter = 0 print("всего лиц ", len(data)) for i in range(0, len(data)): #print("сравниваем лицо", data[i]) if len(data[i]) != 128: print(i, data[i]) #перезагружаем всю базу, будет очень медленно #FaceAlgo.load_all_faces() #print("сравниваем лицо",i) ret, dist = FaceAlgo.compare_face(data[i], 0.45, False) if ret: if len(ret) > 0: print(ret) # оценка, имя персоны, id персоны, дескриптор print("Похож на ", ret[1], dist) # находим персону в базе #print(ret) if dist > 0.1: res, pers = db.search_person_id(ret[1]) if res: print("Добавляем лицо в персону", pers.name) #db.set_face(pers, faces[i]) FaceAlgo.set_face(pers, faces[i]) # else: # print("Лицо не добавляем. сильно похожее") else: new_face_counter += 1 facename = "name" + str(new_face_counter) new_p = db.add_person(facename) # добавляем неизвестно елицо в персну print("нет совпадений в лице создаем новую персону под лицо", facename, faces[i].id, faces[i].image_path) #db.set_face(new_p, faces[i]) FaceAlgo.set_face(new_p, faces[i]) #перезагружаем весь кэш. Поменялось многое FaceAlgo.load_all_faces()
def create_person(): print("создаем новую персону в базе данных") db.add_person() refresh_main_window() return
def f_2(): global istate, lmain, cap, var0, mashtab, count_frame, detect_faces_opencv, AddQ, nameMTS, personMTS, statusMTS, Rtime, Btime statusMTS = "Ok" bluure = 5 mashtab = 0.5 print("Thread2") face_cascade = cv2.CascadeClassifier( 'C:\CV_Start\haarcascades\haarcascade_frontalface_default.xml') count_frame = 0 detect_faces_opencv = False flag_opencv = False cap = cv2.VideoCapture(0) var0 = 1 # while 1: # time.sleep(1) # print("------") while True: _, frame = cap.read() count_frame += 1 frame, face_descriptors = FaceAlgo.find_faces_in_image( frame, bluure, False) person_name = "no_name" #print('preparing for recognize') for face_descriptor in face_descriptors: #print('recognizing') # отрисовываем и проверяем все найденные лица ret, dist = FaceAlgo.compare_face(face_descriptor[0]) #print(ret, dist) if ret: if len(ret) > 0: d = face_descriptor[1] cv2.putText(frame, str(str(round(dist, 2)) + " " + str(ret[2])), (d.left(), d.top()), cv2.FONT_HERSHEY_COMPLEX, 1, (0, 255, 0), 2) #print("Похож на ", ret[2]) person_name = str(ret[2]) # evt = threading.Event() # q.put((person_name, evt)) # print('Waiting for data to be doubled') # evt.wait() else: if statusMTS == "Er": print("Error") continue # if (Btime) - (int(time.time())) > 0: # print("Error") # Btime -= int(time.time()) # continue else: print("Create new person") nameMTS = input() db.add_person(nameMTS) answer, personMTS = db.search_person(nameMTS) FaceAlgo.name(nameMTS, personMTS) frame, face_descriptors = FaceAlgo.find_faces_in_image( frame, bluure, nameMTS, True) tstart = int(time.time()) while ((tstart + 15) - (int(time.time())) > 0): _, frame = cap.read() frame, face_descriptors = FaceAlgo.find_faces_in_image( frame, bluure, nameMTS, True) Rtime = (tstart + 15) - (int(time.time())) print((tstart + 15) - (int(time.time()))) # time.sleep(8) if person_name != "no_name": print(person_name)