У меня есть этот код, пытающийся запустить идентификацию социальной изоляции путем захвата видео, но у меня есть эта ошибка. Не могли бы вы помочь мне? - PullRequest
1 голос
/ 01 мая 2020

У меня есть этот код, пытающийся запустить идентификацию социальной изоляции путем захвата видео, но я получаю следующую ошибку:

Traceback (последний вызов был последним): файл "social_distance_detection.py", строка 127, в cv2.rectangle (frame, (startX, startY), (endX, endY), COLOR, 2) TypeError: в скалярный индекс могут быть преобразованы только целочисленные скалярные массивы

Не могли бы вы Помоги мне?

Вот код, который я запускаю:

for i in range(detections.shape[2]):

        confidence = detections[0, 0, i, 2]

        if confidence > args["confidence"]:

            class_id = int(detections[0, 0, i, 1])

            box = detections[0, 0, i, 3:7] * np.array([w, h, w, h])
            (startX, startY, endX, endY) = box.astype('int')

            # Filtering only persons detected in the frame. Class Id of 'person' is 15
            if class_id == 15.00:

                # Draw bounding box for the object
                cv2.rectangle(frame, (startX, startY), (endX, endY), bounding_box_color[class_id], 2)

                label = "{}: {:.2f}%".format(labels[class_id], confidence * 100)
                print("{}".format(label))


                coordinates[i] = (startX, startY, endX, endY)



    for i in pos_dict.keys():
        if i in close_objects:
            COLOR = np.array([0,0,255])
        else:
            COLOR = np.array([0,255,0])
        (startX, startY, endX, endY) = coordinates[i]

        cv2.rectangle(frame, (startX, startY), (endX, endY), COLOR, 2)
        y = startY - 15 if startY - 15 > 15 else startY + 15
        # Convert cms to feet
        cv2.putText(frame, 'Depth: {i} ft'.format(i=round(pos_dict[i][2]/30.48,4)), (startX, y),
                    cv2.FONT_HERSHEY_SIMPLEX, 0.5, COLOR, 2)

    cv2.namedWindow('Frame',cv2.WINDOW_NORMAL)

Ошибка> https://i.stack.imgur.com/BZSZJ.jpg

1 Ответ

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

Вам нужно привести координаты к int в методе прямоугольника. Используйте (int (startX, int (startY)) то же самое для конечной точки.

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