Top Ad unit 728 × 90

Recientes

recent

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.



Código: Ejemplo de Reproducir Vídeo e ir almacenando los fotogramas en OpenCv y C++

// 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::vector 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");

}

Saludos Imperio, un abrazo a la distancia!
Curso OpenCV y C++ con Visual Studio 2013 (4-25) - Mostrar un Vídeo en OpenCv y guardar los frames en disco Reviewed by Juan Carlos Arcila Díaz on 7:56 Rating: 5

No hay comentarios:

All Rights Reserved by www.IncanatoIT.com - Desarrollando Software © 2014 - 2015
Powered By Blogger, Designed by Sweetheme

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

IncanatoIt.com. Con la tecnología de Blogger.