Как обнаружить человека, когда он находится рядом с объектом? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть сценарий python, который откроет мою веб-камеру и обнаружит объект с помощью yolov3.

Но когда человек находится рядом с определенным объектом c (например, стойкой), мне нужно идентифицировать человека и вычислите, сколько времени человек провел в этом месте.

Что мне делать, чтобы это работало?

1 Ответ

0 голосов
/ 11 июля 2020

с использованием yolov3 немного сложно, поэтому я предлагаю вам использовать более простой и чистый модуль, модуль opencv. Не обязательно, какой модуль вы используете, но для лучшего опыта используйте OpenCV.

Сначала установите его: pip install opencv-python

OpenCV уже содержит множество предварительно обученных классификаторов для лицо, глаза, улыбки и т. д. c .. Я буду использовать классификатор. Вы также можете поэкспериментировать с другими классификаторами. Вам необходимо загрузить обученный классификатор 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, тогда go через документацию, но опять же, возможно, вам не хватает некоторых навыков, поэтому используйте OpenCV для получения опыта. УДАЧИ !!

...