contar píxeles en un vídeo
Publicado por Marc (1 intervención) el 19/09/2019 12:14:56
Hola buenas!
Estoy trabajando con un script que permita identificar las personas que van apareciendo en un vídeo. El objetivo, es calcular el % de espacio ocupado en cada momento o en intervalos de tiempo, para averiguar la capacidad de carga de una zona determinada.
He aprovechado el siguiente script, el cual ya funciona correctamente. El problema es que necesito almacenar los datos, bien sobre el número de personas que van apareciendo, o bien sobre el % de píxeles de personas (blancos) que hay en cada momento,y es aquí donde no se como proceder. No se si alguien tiene algún consejo
Gracias y saludos!
Estoy trabajando con un script que permita identificar las personas que van apareciendo en un vídeo. El objetivo, es calcular el % de espacio ocupado en cada momento o en intervalos de tiempo, para averiguar la capacidad de carga de una zona determinada.
He aprovechado el siguiente script, el cual ya funciona correctamente. El problema es que necesito almacenar los datos, bien sobre el número de personas que van apareciendo, o bien sobre el % de píxeles de personas (blancos) que hay en cada momento,y es aquí donde no se como proceder. No se si alguien tiene algún consejo
Gracias y saludos!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# Importación de librerías
import numpy as np
import cv2
# Capturamos el vídeo
cap = cv2.VideoCapture('portal.mp4')
# Llamada al método
fgbg = cv2.createBackgroundSubtractorKNN(history=500, dist2Threshold=1000, detectShadows=False)
# Deshabilitamos OpenCL, si no hacemos esto no funciona
cv2.ocl.setUseOpenCL(False)
while(1):
# Leemos el siguiente frame
ret, frame = cap.read()
# Si hemos llegado al final del vídeo salimos
if not ret:
break
# Aplicamos el algoritmo
fgmask = fgbg.apply(frame)
# Copiamos el umbral para detectar los contornos
contornosimg = fgmask.copy()
# Buscamos contorno en la imagen
contornos, hierarchy = cv2.findContours(contornosimg,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
# Recorremos todos los contornos encontrados
for c in contornos:
# Eliminamos los contornos más pequeños
if cv2.contourArea(c) < 1000:
continue
# Obtenemos el bounds del contorno, el rectángulo mayor que engloba al contorno
(x, y, w, h) = cv2.boundingRect(c)
# Dibujamos el rectángulo del bounds
cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
# Mostramos las capturas
cv2.imshow('Camara',frame)
cv2.imshow('Umbral',fgmask)
cv2.imshow('Contornos',contornosimg)
# Sentencias para salir, pulsa 's' y sale
k = cv2.waitKey(30) & 0xff
if k == ord("s"):
break
# Liberamos la cámara y cerramos todas las ventanas
cap.release()
cv2.destroyAllWindows()
Valora esta pregunta


0