Обнаружение лица HAAR не работает должным образом - PullRequest
0 голосов
/ 28 января 2020

В настоящее время я работаю над распознаванием лиц с использованием OpenCV. Я закончил тренировку, используя свои позитивные и негативные изображения с помощью каскадного тренажера GUI. Однако, когда я запускаю свой код для проверки на распознавание лиц, работает только первое изображение (только когда для .detectMultiScale установлено значение «серый», 1.01,7), и оно не работает на других изображениях.

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('classifier/cascade.xml')

img = cv2.imread('p/pic2.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_cascade.detectMultiScale(gray,1.01,7)
for (x,y,w,h) in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)

cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Все мои положительные изображения в оттенках серого, и их размер (600 600). Мои негативные размеры изображения больше, но не в оттенках серого. Есть 80 положительных изображений и 160 отрицательных. Я уверен, что это влияет на результаты.

Ответы [ 2 ]

1 голос
/ 28 января 2020
  • Прежде всего ваши негативные и позитивные изображения должны быть в оттенках серого.
  • Во-вторых, вы не говорили о том, как вы маркировали свои положительные изображения для получения положительных векторов.
  • В-третьих, количество ваших изображений (pos и neg) недостаточно и трудно получить хорошие результаты. (Рекомендуется использовать как минимум 900 neg и 1800 pos)
  • Наконец, я предполагаю, что вы используете opencv_traincascade , поэтому на каком этапе xml вы завершили sh тренировку.

Я предлагаю следовать этому учебнику , следуя документации . Я использовал этот учебник и обучал много предметов раньше, так что хорошо следовать

1 голос
/ 28 января 2020

Если вы используете этот код (без каких-либо изменений), то обрабатывается только одно изображение (pic2.png). Для нескольких изображений необходимо l oop просмотреть пути к изображениям из определенной папки.

...