【问题标题】:How to detect objects in video with darknet?如何使用暗网检测视频中的对象?
【发布时间】:2018-09-29 02:49:47
【问题描述】:

我正在使用暗网来检测图像中的物体,它非常有帮助。此外,我还想从计算机中的视频中检测对象。

我安装了 Open CV,但我的电脑没有 GPU。我认为我应该更改我的 darknet.py 文件中的某些内容。但是我应该添加什么代码?你能给我一个明确的指示吗?提前致谢。

【问题讨论】:

  • 这是一个全新的操作,如果它是由暗网提供的,那么它将包含在他们的文档中。
  • 我试图在github上找到答案:(
  • 可能是一个迟到的答案,但正如 Alex Weavers 在他的 comment 中提到的那样,这是一个全新的操作。现在它在文档中被提及。如果您使用的是yolo darknet,则可以直接在命令行中使用“演示”选项,如 Alexey here 所述。

标签: python python-3.x yolo


【解决方案1】:

如果您仔细查看darknet.py 文件,您会发现一个关于如何从给定图像中提取对象的示例。你试过了吗?如果您不这样做,我建议您在进入视频之前先尝试一下。

然后你需要进入视频。 Here is a linkOpenCV 文档,它们解释了如何读取视频文件和流。从此代码中,您将能够提取视频的帧。

然后您可以使用darkent.py 中的代码并将帧提供给它。

如果没有的话,还有一些有用的暗包装。
Here is a link 为一。您可以阅读文档并将其安装在您的机器中。这是非常容易使用。它已经有一个关于如何在图像上使用它的示例。您可以对其进行修改并处理视频。

import numpy as np
import cv2
import pyyolo

cap = cv2.VideoCapture('vtest.avi')
meta_filepath = "/home/rameshpr/Downloads/darknet_google_server/data/obj.data"
cfg_filepath = "/home/rameshpr/Downloads/darknet_google_server/cfg/yolo-lb.cfg"
weights_filepath = "/home/rameshpr/Downloads/darknet_google_server/backup/yolo-v3.weights"


meta = pyyolo.load_meta(meta_filepath)
net = pyyolo.load_net(cfg_filepath, weights_filepath, False)

while(cap.isOpened()):
    ret, frame = cap.read()
    if not ret:
        break

    yolo_img = pyyolo.array_to_image(frame)
    res = pyyolo.detect(net, meta, yolo_img)

    for r in res:
        cv2.rectangle(frame, r.bbox.get_point(pyyolo.BBox.Location.TOP_LEFT, is_int=True),
                      r.bbox.get_point(pyyolo.BBox.Location.BOTTOM_RIGHT, is_int=True), (0, 255, 0), 2)


    cv2.imshow('frame', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

安装完pyyolo后试试上面的代码。

【讨论】:

    猜你喜欢
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-06
    • 2020-11-24
    • 2018-08-25
    相关资源
    最近更新 更多