Как обнаружить объекты в видео с даркнетом? - PullRequest
0 голосов
/ 29 сентября 2018

Я использую darknet для обнаружения объектов на изображении, и это очень полезно.Более того, я также хочу обнаруживать объекты из видео на моем компьютере.

Я установил Open CV, и на моем компьютере нет графического процессора.Я думаю, что я должен что-то изменить в моем файле darknet.py.Но какой код я должен добавить больше?Не могли бы вы дать мне четкую инструкцию?Спасибо заранее.

1 Ответ

0 голосов
/ 17 ноября 2018

Если вы внимательно изучили файл darknet.py, вы найдете пример того, как извлечь объекты из данного изображения.Вы пробовали это?Если вы этого не сделали, я рекомендую вам сначала попробовать его, прежде чем переходить к видеороликам.

Тогда вам необходимо перейти к видеороликам. Вот ссылка на OpenCV документацию, в которой объясняется, как читать видеофайлы и потоки.Из этого кода вы сможете извлечь кадры видео.

Затем вы можете использовать код в darkent.py и передать ему кадры.

Если нет, существуют более темные оболочки, которыеможет быть полезным
Вот ссылка на один.Существует документация, которую вы можете прочитать и установить на свой компьютер.Он очень прост в использовании.У него уже есть пример того, как использовать его на изображениях.Вы можете изменить его и работать с видео.

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.

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