Я пытаюсь настроить свой детектор на проект распознавания лиц или программу, - PullRequest
2 голосов
/ 01 мая 2020

, но я продолжаю получать эту ошибку: TypeError: требуется целое число (получен кортеж типа) мой код:

def DispID (x, y, w, h, NAME, Image):

Name_y_pos = y - 10
Name_X_pos = x + w / 2 - (len(NAME) * 7 / 2)

if Name_X_pos < 0:
    Name_X_pos = 0
elif (Name_X_pos + 10 + (len(NAME) * 7) > Image.shape[1]):
    Name_X_pos = Name_X_pos - (Name_X_pos + 10 + (len(NAME) * 7) - (Image.shape[1]))
if Name_y_pos < 0:
    Name_y_pos = Name_y_pos = y + h + 10


draw_box(Image, x, y, w, h)

cv2.rectangle(Image, (int(Name_X_pos) - 10, int(Name_y_pos) - 25), (int(Name_X_pos) + 10 + (len(NAME) * 7), int(Name_y_pos) - 1), (0, 0, 0), -2)           # Draw a Black Rectangle over the face frame
cv2.rectangle(Image, (Name_X_pos - 10, Name_y_pos - 25), (Name_X_pos + 10 + (int(len(NAME)) * 7), Name_y_pos - 1), WHITE, 1)
cv2.putText(Image, NAME, (Name_X_pos, Name_y_pos - 10), cv2.FONT_HERSHEY_DUPLEX, .4, WHITE)

Журнал ошибок: cv2.rectangle (Изображение, (int (Name_X_pos) - 10, int (Name_y_pos) - 25), (int (Name_X_pos) + 10 + (len (NAME) * 7), int ( Name_y_pos) - 1), (0, 0, 0), -2) TypeError: требуется целое число (получен кортеж типа)

1 Ответ

0 голосов
/ 07 мая 2020

Из-за некоторого деления, сделанного для определения Name_X_pos, вы можете предположить, что число с плавающей точкой не допускается в функции прямоугольника.

Я знаю, что ошибка не говорила ничего о числе с плавающей точкой, но о кортеже. Мне пришлось тестировать построчно, чтобы найти решение.

Это изменение, которое я сделал:

<!-- language: python -->
cv2.rectangle(img, (int(Name_X_pos) - 10, int(Name_y_pos) - 25), (int(Name_X_pos) + 10 + (len(NAME) * 7), int(Name_y_pos) - 1), (0, 0, 0), -2)  # Draw a Black Rectangle over the face frame
cv2.rectangle(img, (int(Name_X_pos) - 10, Name_y_pos - 25), (int(Name_X_pos) + 10 + int(len(NAME)) * 7, Name_y_pos - 1), WHITE, 1)
cv2.putText(img, NAME, (int(Name_X_pos), Name_y_pos - 10), cv2.FONT_HERSHEY_DUPLEX, .4, WHITE)


Результат: enter image description here

...