Top Ad unit 728 × 90

Recientes

recent

Curso OpenCV y C++ con Visual Studio 2013 (5-25) - Capturar y Guardar un Vídeo con OpenCv

Utilizando OpenCv podemos acceder a la cámara que tengamos instalada en nuestra computadora, también podremos procesar estas imágenes capturadas por la cámara mediante OpenCv y por su puesto grabar y almacenar los vídeos de la cámara.

Acceder a la Cámara desde OpenCv
Para acceder a la Cámara lo hacemos de manera parecida a como mostramos un vídeo solo que en lugar de especificar un archivo de vídeo a la clase VideoCapture indicaremos el número de dispositivo que deseamos usar, utilizamos cero si tenemos solo una cámara. 
Podemos procesar también de manera independiente cada uno de los frames capturados de la secuencia de Vídeo.

Almacenar en Disco el Vídeo Capturado
Si deseamos guardar en algún medio de Almacenamiento el vídeo proveniente de la Cámara, podemos hacerlo mediante la clase VideoWriter,e indicar al método open el nombre con que deseamos guardar el archivo con extensión, el códec que usaremos, los cuadros por segundo y la resolución del vídeo.


cv::VideoWriter wtr("D:\\pruebaopencv\\video.avi", CV_FOURCC('M', 'J', 'P', 'G'), 30, Size(640, 480));

      CV_FOURCC('P', 'I', 'M', '1') para codec MPEG - 1 codec.

      CV_FOURCC('M', 'J', 'P', 'G') para códec motion - jpeg.

En el siguiente ejemplo capturaremos el vídeo directamente desde la cámara de la pc, convertiremos cada uno de los frames a escala de Grises y luego iremos almacenado la secuencia de todos los frames a un archivo de Vídeo.

Código: Ejemplo de procesamiento de Frames y guardar vídeo en OpenCv 3.0 y C++

// CursoOpenCV2410.cpp: Juan Carlos Arcila Díaz.

#include "stdafx.h"
#include "opencv2\opencv.hpp"

int _tmain(int argc, _TCHAR* argv[])
{
      //Inicializamos el capturador de vídeo desde la cámara de la Pc
      cv::VideoCapture captura(0);
      //Establecemos la ruta y el formato para almacenar el vídeo
      cv::VideoWriter video("D:\\pruebaopencv\\video.avi", CV_FOURCC('P', 'I', 'M', ''), 20,cv::Size(640, 480));

      //Verificamos que se pueda acceder a la cámara
      if (!captura.isOpened() || !video.isOpened())
      {
            printf("Error al Intentar conectar la cámara");
      }
      //Implementamos nuestra ventana
      cv::namedWindow("Camara", CV_WINDOW_AUTOSIZE);
     
      //Implementamos un bucle para recorrer toda la secuencia de frames en el vídeo
      while (true)
      {
            //Declaramos la imagen Normal y la Imagen a escala de Grises
            cv::Mat frame, destino;
            //Obtenemos un frame
            captura.read(frame);
            //Convertimos la imagen a escala de grises
            cv::cvtColor(frame, destino, CV_BGR2GRAY);
            //Adicionamos el frame al vídeo
            video.write(destino);
            //Mostramos la secuencia de frames o el vídeo
            cv::imshow("Camara", destino);
            //Si el usuario presiona "x" ó "X" cerramos la ventana
            if (cv::waitKey(50) == 88 || cv::waitKey(50) == 120)
            {
                  break;
            }
      }
      //Liberamos el vídeo de la memoria
      video.release();
}
Saludos Imperio, un abrazo a la distancia!
Curso OpenCV y C++ con Visual Studio 2013 (5-25) - Capturar y Guardar un Vídeo con OpenCv Reviewed by Juan Carlos Arcila Díaz on 13:52 Rating: 5

1 comentario:

  1. Un buen post, Y adicional a eso cómo puedo capturar frames cada segundo desde una cárama, procesar ese frame y luego liberar de la memoria y continuar con un sigueinte frame. es para detección de objetos.

    ResponderEliminar

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.