python - 如何使用暗网检测视频中的对象?
问题描述
我正在使用暗网来检测图像中的对象,这非常有帮助。此外,我还想从计算机中的视频中检测对象。
我安装了 Open CV,但我的电脑没有 GPU。我认为我应该更改我的 darknet.py 文件中的某些内容。但是我应该添加什么代码?你能给我一个明确的指示吗?预先感谢。
解决方案
如果您仔细查看该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
。
推荐阅读
- amp-html - 自定义脚本
不返回高度但返回其他值 - swift - Decodable 类型的数组不可解码
- html - 如何摆脱离子标签之间的这个空间?
- c++ - 性能:一次做所有事情,还是每次操作循环多次?
- linux - 如何使用 sed 反复更改目录名称?
- android - 我想在运行时基于将从 API 接收的对象数组以编程方式创建新片段
- .htaccess - 子域、丢失流量和 HTTPS 的动态 htaccess 处理
- functional-programming - 与map函数相关的Logical Coq Proof
- string - 替换多个 Pandas 列中的字符串
- php - 命令 docker-compose (re)build 不会构建容器的新实例