我有这个代码,试图通过捕获视频来运行社会隔离标识,但我有这个错误。你能帮我吗?

2024-06-25 06:47:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这段代码,试图通过捕获视频来运行社会隔离标识,但我得到以下错误:

Traceback (most recent call last): File "social_distance_detection.py", line 127, in cv2.rectangle(frame, (startX, startY), (endX, endY), COLOR, 2) TypeError: only integer scalar arrays can be converted to a scalar index

你能帮我吗

以下是我正在运行的代码:

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


Tags: inboxidifcv2frameclasscolor
2条回答

您需要在矩形方法中将坐标转换为int。使用(int(startX,int(startY))作为终点

使用

for i in pos_dict.keys():
        if i in close_objects:
            COLOR = (0,0,255)
        else:
            COLOR = (0,255,0)

而不是

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

相关问题 更多 >