segmentacion robologs raspberry por objetos ejemplos deteccion colores color python opencv video frame frame-rate

python - robologs - segmentacion de color opencv



Cómo saber el número total de Frame en un archivo con cv2 en python (3)

Con una versión más nueva de OpenCV (yo uso 3.1.0) funciona así:

import cv2 cap = cv2.VideoCapture("video.mp4") length = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) print( length )

Y similar para otras propiedades de video cv2.CAP_PROP_*

Cómo saber el número total de Frame en un archivo (.avi) a través de Python usando open cv module.

Si es posible, toda la información (resolución, fps, duración, etc.) que podemos obtener de un archivo de video a través de esto.


Otra solución que no depende de los getters CV_CAP_PROP veces con errores es atravesar todo el archivo de video en un bucle

  • Aumente una variable de contador de cuadros cada vez que se encuentre un marco válido y deténgase cuando aparezca un elemento inválido (final del archivo de video).
  • Recopilar información sobre la resolución es más complicado porque algunos códecs admiten resolución variable (similar a VBR en archivos de audio donde la tasa de bits no es una constante, sino que cubre un rango predefinido).

    • resolución constante : solo necesita el primer fotograma para determinar la resolución del archivo de video completo en este caso, por lo que no es necesario recorrer el video completo
    • resolución variable : necesita obtener la resolución de cada fotograma (ancho y alto) y calcular un promedio para obtener la resolución promedio del video
  • El FPS se puede calcular, sin embargo, aquí tiene el mismo problema que con la resolución: constante (CFR) vs variable (VFR). Esto es más un problema de mutli-threading omho. Personalmente, utilizaría un contador de fotogramas, que aumentaría después de cada fotograma válido, mientras que en un intervalo de 1 segundo, un temporizador (que se ejecuta en una secuencia de fondo) activaría el guardado del valor del contador actual y luego lo restablecería. Puede almacenar los valores en una lista para calcular la frecuencia de cuadro promedio / constante al final, cuando también sabrá la cantidad total de cuadros que tiene el video.

La desventaja de esta forma bastante simplista de hacer las cosas es que tiene que atravesar todo el archivo, que, en caso de que sea de varias horas, definitivamente será notado por el usuario. En este caso, puede ser inteligente y hacer eso en un proceso en segundo plano mientras permite que el usuario haga otra cosa mientras su aplicación está recopilando esta información sobre el archivo de video cargado.

La ventaja es que no importa qué archivo de video tenga mientras OpenCV pueda leer de él obtendrá resultados bastante precisos a diferencia del CV_CAP_PROP que puede funcionar o no como usted lo esperaba.


import cv2 cap = cv2.VideoCapture(fn) if not cap.isOpened(): print "could not open :",fn return length = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_COUNT)) width = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_WIDTH)) height = int(cap.get(cv2.cv.CV_CAP_PROP_FRAME_HEIGHT)) fps = cap.get(cv2.cv.CV_CAP_PROP_FPS)

mira here para más información.

Además, todo con un grano de sal, no todos los accesorios son obligatorios, algunos podrían no estar disponibles con su códec de captura / video.