Пример #1
0
        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()
Пример #2
0
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()
Пример #3
0
def create_person():
    print("создаем новую персону в базе данных")
    db.add_person()
    refresh_main_window()
    return
Пример #4
0
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)