Не предсказывать весь данный класс opencv - PullRequest
0 голосов
/ 27 мая 2020

Я использую следующий код для предсказания 3 классов, но код предсказывает только 1 класс. Какие изменения требуются. Пожалуйста, помогите.

# Loading the cascades
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

def face_extractor(img):
    # Function detects faces and returns the cropped face
    # If no face detected, it returns the input image

    #gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(img, 1.3, 5)

    if faces is ():
        return None

        name="None matching"

        if(pred[0][0]>0.5):
            name='Sam'
        elif(pred[0][1]>0.5):
            name= 'Henry'
        elif(pred[0][2]>0.5):
            name= 'Caje'

        cv2.putText(frame,name, (50, 50), cv2.FONT_HERSHEY_COMPLEX, 1, (0,255,0), 2)
    else:
        cv2.putText(frame,"No face found", (50, 50), cv2.FONT_HERSHEY_COMPLEX, 1, (0,255,0), 2)
    cv2.imshow('Video', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
video_capture.release()
cv2.destroyAllWindows()

1 Ответ

0 голосов
/ 28 мая 2020

Я предполагаю, что вы хотите распознать конкретное c лицо, используя OpenCV. Если это так, вместо использования каскада хаара, который обычно используется для поиска объектов одного типа (т.е. всех людей, всех лиц и т. Д. c.), Используйте cv :: FaceRecognizer . Вам нужно будет создать обучающий сценарий Python, который обучит файл распознавания, а затем сохранит его. Затем вы должны прочитать файл в своем сценарии прогнозирования, который должен дать вам желаемый результат. Немного погуглив, мне удалось найти эту очень подробную статью о том, как использовать cv :: FaceRecognizer в Python.

Пожалуйста, отметьте это как ответ, если он ответил на ваш вопрос.

...