[使用OpenCV进行YOLOV3检测时,输出视频流中的延迟

问题描述 投票:0回答:1

这是我使用我创建的YOLOV3权重的遮罩检测代码。每当我运行程序时,我的检测视频输出都会出现延迟。这是代码,请看一下。


import cv2
import numpy as np


net = cv2.dnn.readNet("yolov3_custom_final.weights", "yolov3_custom.cfg")

with open("obj.name", "r") as f:
    classes = f.read().splitlines()


cap = cv2.VideoCapture(0 + cv2.CAP_DSHOW)

while True:
    ret, img = cap.read()
    height, weight, _ = img.shape
    blob = cv2.dnn.blobFromImage(img, 1 / 255, (416, 416), (0, 0, 0), swapRB=True, crop=False)
    net.setInput(blob)
    output = net.getUnconnectedOutLayersNames()
    layers = net.forward(output)

    box = []
    confidences = []
    class_ids = []

    for out in layers:
        for detection in out:
            scores = detection[5:]
            class_id = np.argmax(scores)
            confidence = scores[class_id]
            if confidence > 0.3:
                centre_x = int(detection[0] * weight)
                centre_y = int(detection[1] * height)
                w = int(detection[2] * weight)
                h = int(detection[3] * height)

                x = int(centre_x - w / 2)
                y = int(centre_y - h / 2)

                box.append([x, y, w, h])
                confidences.append(float(confidence))
                class_ids.append(class_id)

    indexes = np.array(cv2.dnn.NMSBoxes(box, confidences, 0.5, 0.4))
    font = cv2.FONT_HERSHEY_PLAIN
    colors = np.random.uniform(0, 255, size=(len(box), 3))

    for i in indexes.flatten():
        x, y, w, h = box[i]
        label = str(classes[class_ids[i]])
        confidence = str(round(confidences[i], 2))
        color = colors[i]
        cv2.rectangle(img, (x, y), (x + w, y + h), color, 2)
        cv2.putText(img, label + "I" + confidence, (x, y + 20), font, 2, (255, 255, 255), 2)

    cv2.imshow("Final", img)
    if cv2.waitKey(1) & 0xff == ord("q"):
        break

cap.release()
cv2.destroyAllWindows()

有人可以在本期中为我提供帮助,还是建议一种减少输出视频流中滞后的方法?]] >>

这是我使用我创建的YOLOV3权重的遮罩检测代码。每当我运行程序时,我的检测视频输出都会出现延迟。这是代码,请看一看。导入cv2 ...

python-3.x object-detection yolo
1个回答
0
投票

随着时间的流逝,我发现了这个问题的可能答案。当我在没有GPU的本地系统中运行YOLO模型时,这是导致Output延迟的原因,因为Output处理一个帧并在完成后占用另一个帧。

© www.soinside.com 2019 - 2024. All rights reserved.