Как получить одну ограничивающую рамку при обнаружении лица с помощью opencv и python - PullRequest
0 голосов
/ 15 февраля 2019

Я не получаю идеальной точности при обнаружении лица с помощью opencv.

Вот мой код:

import cv2

#create a cascadeclassifier object
face_cascade = cv2.CascadeClassifier("C:/Users/yash/AppData/Local/Programs/Python/Python35/Lib/site-packages/cv2/data/haarcascade_frontalface_default.xml")
#create a cascade classifier.it will contain the features of the face

#reading the image as it is
img = cv2.imread("profile.JPG")

#reading the image as gray_scale image
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #converting colored image to gray scale

#search the co-ordinates of the image
faces = face_cascade.detectMultiScale(gray_img,scaleFactor = 1.05,minNeighbors=5)
#scaleFactor = decreases the shape value by 5%,until the face is found .smaller this value , the greater is the accuracy.
#detectMultiScale = method to search for the face rectangle co-ordinates

#print(type(faces))
#print(faces)

for x,y,w,h in faces:
    img = cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),3)

resized_img = cv2.resize(img,(int(img.shape[1]/2) , int(img.shape[0]/2)))    
cv2.imshow("face detection",resized_img)

cv2.waitKey(0)

cv2.destroyAllWindows()

Здесь есть изображение Я пытаюсьчтобы получить идеальную точность.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2019

В дополнение к рекомендации @ Нужного вы должны использовать алгоритм Non Maximum Suppression для решения проблемы множественных обнаружений.

Pyimagesearch имеет очень хорошую статью вместе с кодом на эту тему, которыйтебе поможет.

0 голосов
/ 15 февраля 2019

Для одного лица используйте флаг CV_HAAR_FIND_BIGGEST_OBJECT в качестве последнего параметра в deteMultiScale.

Но каскады Хаара сейчас не лучший выбор для обнаружения лиц.В OpenCV 4.0 разработчики удаляют код для обучения каскадам Хаара - они рекомендуют использовать DNN. Например, здесь .

И второе: разработчики OpenCV создали инфраструктуру с открытым исходным кодом для вывода DNN - OpenVINO и множество моделей с предварительной подготовкой (для обнаружения лица тоже).Если вы хотите иметь самый быстрый детектор лиц на процессоре, чем вам нужно использовать OpenVINO.

...