Как дать номера прямоугольникам, которые я нарисовал для подсчета людей? - PullRequest
1 голос
/ 05 июня 2019

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

Вот код, который я использовал, если вы можете дать мне представление о его подсчете, это было бы здорово.

import numpy as np
import cv2
import sys
video_path = 'video.avi'
cv2.ocl.setUseOpenCL(False)
version = cv2.__version__.split('.')[0]
print(version) 
cap = cv2.VideoCapture(video_path)
if version == '2' :
        fgbg = cv2.BackgroundSubtractorMOG2()
if version == '3': 
        fgbg = cv2.createBackgroundSubtractorMOG2()
while (cap.isOpened):   
    ret, frame = cap.read()
    if ret==True:       
        fgmask = fgbg.apply(frame)
        ret1,th1 = cv2.threshold    (fgmask,150,200,cv2.THRESH_BINARY)                  
        if version == '2' : 
            (contours, hierarchy) =     cv2.findContours(th1.copy(),     cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
        if version == '3' : 
            (im2, contours, hierarchy) =     cv2.findContours(th1.copy(),     cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
            for c in contours:
            if cv2.contourArea(c) < 500:
                continue

            (x, y, w, h) = cv2.boundingRect(c)                              cv2.rectangle(frame, (x, y), (x + w,     y + h), (0, 255, 0), 2)

        cv2.imshow('foreground and background',th1)
        cv2.imshow('rgb',frame)
        if cv2.waitKey(1) & 0xFF == ord("q"):
            break
cap.release()
cv2.destroyAllWindows()
...