Алгоритм обнаружения лица - Haar Cascade Classifier не обнаруживает объект - PullRequest
0 голосов
/ 15 января 2020

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

import cv2
import matplotlib.pyplot as plt
img1 = cv2.imread("baby.jpg")
gray_img = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY)
##gray_resized = cv2.resize(gray_img, (800, 900))
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
faces = face_cascade.detectMultiScale(gray_img ,1.3, 5)
for (x, y, w, h) in faces:
   img = cv2.rectangle(img1 , (x, y), (x + w, y + h), (255, 0, 0), 2)
   roi_gray = gray_img[y:y + h, x:x + w]
   roi_color = img1[y:y + h, x:x + w]
   eyes = eye_cascade.detectMultiScale(roi_gray)
   for (ex, ey, ew, eh) in eyes:
      cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)
cv2.imshow('img',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

код был написан на основе следующего сайта:

Распознавание лиц

и изображение, которое я использовал, следующее enter image description here

также я скачал классификацию файлы по следующей ссылке Классификация

, но когда я запускаю код, я получаю следующие ошибки

cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\core\src\persistence.cpp:722: error: (-49:Unknown error code -49) Input file is empty in function 'cv::FileStorage::Impl::open'

Вышеуказанное исключение было прямой причиной следующего исключения:

T

raceback (most recent call last):
      File "C:/Users/Dato/Downloads/my_virtual_python/detecting_face.py", line 6, in <module>
        face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')
    SystemError: <class 'cv2.CascadeClassifier'> returned a result with an error set

, пожалуйста, помогите мне выяснить, каков источник ошибки?

1 Ответ

0 голосов
/ 15 января 2020

Я попробовал ваш код, ваш код работал, но он не дал правильного ответа, поэтому я немного изменил его, убедитесь, что у вас есть два xml файла в той же папке, что и ваш файл кода, и изображение должно быть в той же папке тоже. Поэтому сначала создайте папку, поместите файл кода, 2 xml файлы и изображение в нее, а затем запустите код, который я вставил ниже. Ссылка на файлы xml ('haarcascade_frontalface_default. xml', 'haarcascade_eye. xml'): ЗДЕСЬ .

import cv2

img = cv2.imread("baby.jpg", 0)

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')

faces = face_cascade.detectMultiScale(img, scaleFactor=1.1, minNeighbors=10)
for (x, y, w, h) in faces:
   img = cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 0), 2)
#    roi_gray = img[y:y + h, x:x + w]
   eyes = eye_cascade.detectMultiScale(img)
   for (ex, ey, ew, eh) in eyes:
      img = cv2.rectangle(img, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2)

cv2.imshow("Final_detected_image", img)
cv2.waitKey(0)

Мой результат вывода такой, как ниже, Вы можете видеть, что он по ошибке обнаружил носы, но это то, что он для haarcascades. Я предлагаю вам использовать другие методы обнаружения лиц и обязательно настроить значения для «scaleFactor» и «minNeighbors», как для лиц, так и для глаз.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...