Python - contar píxeles en un vídeo

 
Vista:

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!

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
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder