【问题标题】:How to detect a person when he/she is near an object?当一个人靠近一个物体时如何检测他/她?
【发布时间】:2020-07-10 09:22:36
【问题描述】:

我有一个 python 脚本,它将打开我的网络摄像头并使用 yolov3 检测对象。

但是当这个人靠近一个特定的物体(例如一个架子)时,我需要识别这个人并计算这个人在那个地方呆了多长时间。

我应该怎么做才能让它发挥作用?

【问题讨论】:

  • 你能发布一些你的代码吗?没有看到你正在使用的方法,很难推荐一些东西。

标签: python object-detection


【解决方案1】:

使用yolov3有点难,所以我建议你使用一个更简单干净的模块,opencv模块。使用哪个模块不是强制性的,但为了获得更好的体验,请使用 OpenCV。

首先安装它: pip install opencv-python

OpenCV 已经包含许多针对面部、眼睛、微笑等的预训练分类器。我将使用分类器。您也可以尝试使用其他分类器。 您需要下载经过训练的分类器 XML 文件 (haarcascade_frontalface_default.xml),该文件可在 OpenCv 的 GitHub 存储库中找到。将其保存到您的工作位置。 在下面的代码中,我将彩色图像转换为黑白图像。

代码:

import cv2


face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)
for (x, y, w, h) in faces:
    cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow('img', img)
cv2.waitKey()

我们也可以对视频这样做,因为视频实际上每秒有很多帧,所以我们可以把它当作图像,所以对于视频你可以使用以下CODE:

import cv2


face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# To capture video from webcam. 
cap = cv2.VideoCapture(0)
# now we will use an infinitive loop to read for each frames per second
while True:
    
    _, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
    cv2.imshow('img', img)

    # Stop if escape key is pressed

    k = cv2.waitKey(30) & 0xff
    if k==27:
        break
# Release the VideoCapture object
cap.release()

但是如果你仍然想使用 yolov3,那么请阅读文档,但同样,你可能缺乏一些技能,所以使用 OpenCV 来获得经验。 祝你好运!!

【讨论】:

    猜你喜欢
    • 2018-04-10
    • 1970-01-01
    • 2020-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    相关资源
    最近更新 更多