Curso OpenCV y C++ con Visual Studio 2013 (4-25) - Mostrar un Vídeo en OpenCv y guardar los frames en disco
Buen día amigos de IncanatoIt, en este artículo veremos como reproducir un vídeo en OpenCv 2.4.10, pero además de eso ir almacenando los frames o fotogramas mostrados en cada segundo en una carpeta de nuestro Disco Duro; esto puede servir mucho al momento de procesar vídeos e ir almacenando solo los fotogramas de Interés.
Reproducir un Vídeo en OpenCv
Para reproducir un video se hace de forma similar a una imagen ya que un vídeo no es más que una secuencia de imágenes, por lo que deberemos cargar las imágenes del vídeo y mostrarla una tras otras utilizando un ciclo repetitivo o Bucle.
Almacenar los frames de un Vídeo en OpenCv
A veces será necesario almacenar los frames de la secuencia de un vídeo, para poder procesarlos después independientemente como imágenes simples, mediante este código se podrá ir almacenando en algún medio de almacenamiento todos lo frames de la secuencia de vídeo a medida que este se va mostrando.
// CursoOpenCV2410.cpp: Juan Carlos Arcila Díaz. #include "stdafx.h" #include "opencv2\opencv.hpp" int _tmain(int argc, _TCHAR* argv[]) { //Creamos una ventana que se ajuste al tamaño cv::namedWindow("Ventana", CV_WINDOW_AUTOSIZE); //Cargamos el archivo de vídeo específico cv::VideoCapture captura("D:\\HUV15.wmv"); //Verificamos si se ha podido cargar el Vídeo if (!captura.isOpened()) { printf("Video No se ha podido Abrir"); return -1; } //Obtenemos los cuadros por segundo double fps = captura.get(CV_CAP_PROP_FPS); //Calculamos el tiempo de espera entre cada Imagen (retardo) int delay = 1000 / fps; //Contador de Frames para almacenar los archivos int numframe = 0; //Ruta del archivo char filename[50]; while (true) { cv::Mat frame; //Cargar el primer frame o imagen del vídeo en la variable //captura>>frame; captura.read(frame); //Mostramos la imagen cv::imshow("Ventana", frame); //Guardamos la imagen en disco si deseamos cv::vectorSaludos Imperio, un abrazo a la distancia!compression_params; compression_params.push_back(CV_IMWRITE_PNG_COMPRESSION); compression_params.push_back(9); //Asignamos la ruta a cada frame para almacenarlos, y luego los guardamos en disco sprintf_s(filename, "D:\\pruebaopencv\\frames\\prueba%d.png", numframe); cv::imwrite(filename, frame, compression_params); numframe++; //Esperar un periodo de tiempo especificado por delay //si se presiona 'x" o "X" salir del bucle if (cv::waitKey(delay) == 88 || cv::waitKey(delay) == 120) break; } cv::destroyWindow("Ventana"); }
Curso OpenCV y C++ con Visual Studio 2013 (4-25) - Mostrar un Vídeo en OpenCv y guardar los frames en disco
Reviewed by IncanatoIt-ad
on
7:56
Rating:
No hay comentarios: