Parece que no puedo capturar marcos de un archivo usando OpenCV. He comstackdo desde la fuente en Ubuntu con todos los requisitos previos necesarios de acuerdo con: http://opencv.willowgarage.com/wiki/InstallGuide%20%3A%20Debian
#!/usr/bin/env python import cv import sys files = sys.argv[1:] for f in files: capture = cv.CaptureFromFile(f) print capture print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_WIDTH) print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_HEIGHT) for i in xrange(10000): frame = cv.QueryFrame(capture) if frame: print frame
Salida:
ubuntu@local:~/opencv$ ./test.py bbb.avi 0.0 0.0
Los marcos son siempre ninguno …
He transcodificado un archivo de video a formato i420 usando:
mencoder $1 -nosound -ovc raw -vf format=i420 -o $2
¿Algunas ideas?
No tienes instalados los paquetes gstreamer-ffmpeg
o gsteamer-python
o gsteamer-python-devel
. Instalé los tres. y el mismo problema fue resuelto.
Estoy usando OpenCV 2.2.0, comstackdo en Ubuntu desde la fuente. Puedo confirmar que el código fuente que proporcionó funciona como se esperaba. Así que el problema está en otra parte.
No pude reproducir su problema usando mencoder (instalarlo es un problema en mi máquina), así que usé ffmpeg
para envolver un video sin procesar en el contenedor AVI:
ffmpeg -s cif -i ~/local/sample-video/foreman.yuv -vcodec copy foreman.avi
(foreman.yuv es una secuencia de imágenes CIF estándar que puede encontrar en la red si mira a su alrededor ).
Ejecutar el AVI desde ffmpeg
través de su fuente da esto:
misha@misha-desktop:~/Desktop/stackoverflow$ python ocv_video.py foreman.avi 352.0 288.0 ...
Así que las cosas funcionan como se espera. Lo que debe comprobar:
ffmpeg
bibliotecas ffmpeg
para leer archivos de video, así que esté atento a los mensajes informativos. Esto es lo que sucede si intenta reproducir un archivo de video RAW sin un contenedor (suena similar a su problema): error:
misha@misha-desktop:~/Desktop/stackoverflow$ python ocv_video.py foreman.yuv [IMGUTILS @ 0x7fff37c8d040] Picture size 0x0 is invalid [IMGUTILS @ 0x7fff37c8cf20] Picture size 0x0 is invalid [rawvideo @ 0x19e65c0] Could not find codec parameters (Video: rawvideo, yuv420p) [rawvideo @ 0x19e65c0] Estimating duration from bitrate, this may be inaccurate GStreamer Plugin: Embedded video playback halted; module decodebin20 reported: Your GStreamer installation is missing a plug-in. 0.0 0.0
ffplay file.avi
: si eso falla, entonces es probable que el problema esté en el archivo. Intente usar ffmpeg
para transcodificar en lugar de mencoder
. ffmpeg
esté dañada.