Я пишу код об автоэнкодере для распознавания лиц. Часть кода, которую я использовал, выглядит следующим образом:
face_cascade = cv2.CascadeClassifier('C:/Users/PC/PycharmProjects/haarcascade_frontalface_default.xml')
print(face_cascade)
img = cv2.imread('C:/Users/PC/PycharmProjects/exmpforbike6/training_images/JenniferGroup.jpg')
print(img)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
print("voici",gray)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
roi_gray = gray[y:y + h, x:x + w]
roi_color = img[y:y + h, x:x + w]
a = []
for i in range(0, faces.shape[0]):
a.append(gray[faces[i][1]:faces[i][1] + faces[i][3], faces[i][0]:faces[i][0] + faces[i][2]])
это ошибка, которую я получаю:
AttributeError: 'tuple' object has no attribute 'shape'
ошибка именно в этой строке:
for i in range(0, faces.shape[0]):
a.append(gray[faces[i][1]:faces[i][1] + faces[i][3], faces[i][0]:faces[i][0] + faces[i][2]])
Любая идея о том, как я могу это исправить ??






Посмотрите ссылку это от 2016 года.
«Причина проблемы в том, что detectMultiScale возвращает пустой кортеж (), когда нет совпадений, но numpy.ndarray, когда есть совпадения», поэтому AttributeError, который вы получаете, имеет некоторый смысл.
Вы должны добавить некоторый код проверки, чтобы поймать этот случай, и проверить, вернул ли detectMultiScale результаты, или какой тип данных у вашей переменной перед использованием .shape[0].
В будущем, если вопрос будет повторяться, отметьте его для закрытия. Кроме того, какой дерьмовый дизайн API!
Извините, сделаю в следующий раз, я все еще осваиваю SO. И я согласен, весь стек Numpy/PyPlot/OpenCV может быть таким простым для получения результатов, но время от времени так разочаровывает.
Не беспокойтесь, просто к вашему сведению в следующий раз.
Если это решит вашу проблему, не стесняйтесь принять ответ, чтобы он был для дальнейшего использования. Хорошего дня
Возможный дубликат Код обнаружения лица Python OpenCV иногда вызывает «кортеж», объект не имеет атрибута «форма»