Ошибка: объект 'tuple' не имеет атрибута 'shape' - PullRequest
0 голосов
/ 01 февраля 2019

Я писал код об автоэнкодере для распознавания лиц. Часть кода, которую я использовал, выглядит следующим образом:

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]])

Любая идея о том, как я могу это исправить ??

1 Ответ

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

Проверьте эту ссылку с 2016 года.

"Причина проблемы в том, что detectMultiScale возвращает пустой кортеж (), когда нет совпадений,но numpy.ndarray, когда есть совпадения ", так что AttributeError, который вы получаете, имеет некоторый смысл.

Вы должны добавить некоторый проверочный код, чтобы поймать этот случай, и проверить либо, если detectMultiScale вернулосьрезультаты или тип данных вашей переменной перед использованием .shape[0].

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