Как сделать так, чтобы окно захвата OpenCV отображалось поверх окна моего браузера? - PullRequest
0 голосов
/ 30 января 2020

По сути, в моем представлении есть функция, которая при вызове отображает окно видеозаписи веб-камеры opencv. Но проблема в том, что окно открывается, но за окном моего браузера chrome я должен вручную щелкнуть значок на панели задач, чтобы открыть окно перед браузером. Проще говоря, Z-индекс окна Capture должен быть больше, чем окно браузера.

VIEW.PY

def face_recognition(request, eid):
    size = 4
    haar_file = 'C:\\Users\\Aayush\\ev_manage\\face_detector\\haarcascade_frontalface_default.xml'
    datasets = 'C:\\Users\\Aayush\\ev_manage\\face_detector\\static\\face_detector\\datasets'

    # Create a list of images and a list of corresponding names
    (images, lables, names, id) = ([], [], {}, 0)
    for (subdirs, dirs, files) in os.walk(datasets):
        for subdir in dirs:
            names[id] = subdir
            subjectpath = os.path.join(datasets, subdir)
            for filename in os.listdir(subjectpath):
                path = subjectpath + '/' + filename
                lable = id
                images.append(cv2.imread(path, 0))
                lables.append(int(lable))
            id += 1
    # (width, height) = (130, 100)

    # Create a Numpy array from the two lists above
    (images, lables) = [numpy.array(lis) for lis in [images, lables]]

    model = cv2.face.LBPHFaceRecognizer_create()
    model.train(images, lables)
    # Part 2: Use fisherRecognizer on camera stream
    face_cascade = cv2.CascadeClassifier(haar_file)
    webcam = cv2.VideoCapture(0)
    flag = 0
    d_id = 1000
    while True:
        (_, im) = webcam.read()
        gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
        faces = face_cascade.detectMultiScale(gray, 1.3, 5)
        for (x, y, w, h) in faces:
            cv2.rectangle(im, (x, y), (x + w, y + h), (255, 0, 0), 2)
            face = gray[y:y + h, x:x + w]
            # face_resize = cv2.resize(face, (width, height))
            face_resize = cv2.resize(face, None, fx=0.5, fy=0.5)
            # Try to recognize the face
            prediction = model.predict(face_resize)
            cv2.rectangle(im, (x, y), (x + w, y + h), (0, 255, 0), 3)

            if prediction[1] < 110:
                uid = Delegate.objects.get(dataset_id=names[prediction[0]])
                cv2.putText(im, '% s % s' %
                            (uid.first_name, uid.last_name), (x - -35, y - 20),
                            cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 0))
            else:
                cv2.putText(im, 'Unable to Recognize',
                            (x - -35, y - 20), cv2.FONT_HERSHEY_PLAIN, 1, (0, 255, 0))

            if prediction[1] < 110:
                d_id = names[prediction[0]]
        #     break

        cv2.imshow('Recognizing Face...', im)

        key = cv2.waitKey(10)
        if key == 13:
            present_delegate(request, eid, d_id)
            break

    webcam.release()
    cv2.destroyAllWindows()
    func = delegate_det(request, d_id)
    return render(request, "face_recognition.html", {"eid": eid})

Так есть ли какой-либо предопределенный метод в Библиотека OpenCV для принудительного открытия окна веб-камеры захвата в развернутом виде?

...