Me gustaría saber cómo puedo grabar un video en MATLAB con mi cámara web.¿Cómo grabo video desde una cámara web en MATLAB?
Respuesta
Si ya sabe cómo capture a single image from a webcam, entonces, sólo debería ser una cuestión de unir las imágenes en una película. Puede convertir un archivo de imagen en un cuadro de película usando IM2FRAME, luego puede usar AVIFILE para crear un archivo de video a partir de los cuadros. Así es como el código podría ser:
aviObject = avifile('myVideo.avi'); % Create a new AVI file
for iFrame = 1:100 % Capture 100 frames
% ...
% You would capture a single image I from your webcam here
% ...
F = im2frame(I); % Convert I to a movie frame
aviObject = addframe(aviObject,F); % Add the frame to the AVI file
end
aviObject = close(aviObject); % Close the AVI file
acabo de utilizar un bucle for como un ejemplo sencillo, pero es posible que desee utilizar un MATLAB Timer Object si por el contrario quiere capturar imágenes y agregarlos al archivo AVI en el tiempo regulares intervalos.
Aquí se puede ver cómo grandes videos para capturar y procesar las imágenes de la cámara web, para que la grabación no debe ser difícil:
http://blogs.mathworks.com/videos/2008/01/18/cool-feature-video-processing-demos/
En mi vida universitaria que he hecho este proyecto nombrado como
Audio/video Recorder & player application based on MATLAB
En eso he hecho la grabación de audio y la grabación y reproducción de video en la programación de matlab. se puede descargar el código fuente de here
primera construcción de una interfaz de entrada de vídeo
vid = videoinput('winvideo',1,'RGB24_400x300');
Tendrá que ajustar el último bit de la cámara web. Para encontrar una lista de dispositivos de cámara web (y otras cosas además de) empleo:
imaqhwinfo
A continuación se hace la primera cámara web en un objeto
a=imaqhwinfo('winvideo',1)
Encuentra la lista de formatos de vídeo compatibles con
a.SupportedFormats
A continuación, querrá determinar su velocidad de fotogramas (más sobre esto here):
set(vid,'FramesPerTrigger',100);
start(vid);
wait(vid,Inf);
% Retrieve the frames and timestamps for each frame.
[frames,time] = getdata(vid, get(vid,'FramesAvailable'));
% Calculate frame rate by averaging difference between each frame's timestamp
framerate = mean(1./diff(time))
La propiedad FrameGrabInterval
especifica con qué frecuencia se almacenan los fotogramas de la secuencia de video. Por ejemplo, si lo configuramos en 5, entonces solo se conserva 1 en 5 fotogramas, los otros 4 fotogramas se descartarán. El uso de la tasa de fotogramas, determinar la frecuencia con la que desea obtener marcos
set(vid,'FrameGrabInterval',10);
Para determinar el número de fotogramas para adquirir en total, calcular el número total de tramas que se adquirieron a frecuencia de imagen del dispositivo, y luego dividir por el FrameGrabInterval.
capturetime = 30;
interval = get(vid,'FrameGrabInterval');
numframes = floor(capturetime * framerate/interval)
que ahora está listo para grabar y reproducir con vídeo utilizando el comando getdata
(peekdata
es también útil), sin embargo ...
Si se adquirió un gran número de cuadros, es más práctico para registrar las imágenes en el disco en lugar de en la memoria. Usando la Caja de herramientas de adquisición de imágenes, puede registrar imágenes directamente en un archivo AVI. Configuramos esto usando la propiedad LoggingMode.
set(vid,'LoggingMode','disk');
Cree un objeto de archivo AVI para iniciar sesión con el comando avifile. Debemos especificar el nombre de archivo a usar y la velocidad de cuadro en la que debe reproducirse el archivo AVI. Luego, establezca la propiedad DiskLogger del objeto de entrada de video en el archivo AVI.
avi = avifile('timelapsevideo','fps',framerate);
set(vid,'DiskLogger',avi);
Inicie la adquisición de lapso de tiempo y espere a que se complete la adquisición. Tenga en cuenta que la Caja de herramientas de adquisición de imágenes no vincula MATLAB® mientras está adquiriendo. Puede comenzar la adquisición y seguir trabajando en MATLAB.
start(vid);
wait(vid,Inf); % Wait for the capture to complete before continuing.
Una vez se haya completado la captura, recuperar el objeto de archivo AVI, y utilice la función de cierre para liberar los recursos asociados a ella.
avi = get(vid,'DiskLogger');
avi = close(avi);
Cuando haya terminado con el objeto de entrada de vídeo, se debe utilizar la función de eliminación de liberar los recursos de hardware asociados a ella, y sacarlo del espacio de trabajo utilizando la función de cancelación.
delete(vid);
clear vid;
Una porción grande, pero no todos, de lo anterior se extrajo de here.
Al presionar start(vid)
, puede notar que hay un poco de retraso antes de que los marcos comiencen a ser adquiridos. Esto es malo si estás tratando de sincronizar el video con algo. En este caso, tendrá que intentar trabajar con el trigger:
triggerconfig(vid,'manual');
start(vid); %There'll be a delay here, but nothing is being captured
trigger(vid); %Use this line when you want the capture to start. There should be very little delay.
Más información sobre los factores desencadenantes y la sincronización es here.
Hace poco escribí una publicación de blog sobre cómo grabar audio y video sincronizados en MATLAB enviando líneas de comando al programa ffmpeg. Puede encontrar más información acerca de here, pero a continuación se muestra una muestra con algunas configuraciones que tenían sentido en mi computadora.
dos('ffmpeg -list_devices true -f dshow -i dummy')
dos('ffmpeg -f dshow -list_options true -i video="USB2.0 HD UVC WebCam')
dos('ffmpeg -f dshow -video_size 1280x720 -framerate 30 -audio_buffer_size 80 -i video="USB2.0 HD UVC WebCam":audio="Microphone (Realtek High Definition Audio)" -t 10 -c:v libx264 -preset veryfast -crf 25 test_vid2.mp4');
- 1. ¿Cómo capturo video desde una cámara web?
- 2. ¿Cómo transmito video desde mi cámara web con Html5?
- 3. ¿Cómo grabo video en un disco local en AIR?
- 4. Grabación de video con cámara web en una página web
- 5. Superpone dos flujos de cámara web: Matlab
- 6. Transmisión de video desde una cámara Android al servidor
- 7. ¿Cómo acceder a la cámara web desde HTML5?
- 8. Cómo unir cámara web FLV
- 9. Cómo capturar imágenes desde la cámara web cliente en asp.net
- 10. Guardar video capturado de la cámara web usando Flash
- 11. La GUI de QT se congela al capturar video desde la cámara web usando OpenCV
- 12. Interfaz con una cámara web
- 13. ¿Escribir una cámara web virtual?
- 14. cómo implementar una cámara web falsa?
- 15. Transmisión de video desde una cámara procesada en JavaFX 2.0 MediaView
- 16. C# .net - Cámara web Captura de imagen
- 17. ¿Cómo se puede transmitir desde la cámara a la página web?
- 18. Recepción de transmisión de video desde una cámara IP en android
- 19. OpenCV: Cómo capturar fotogramas desde una cámara Ethernet
- 20. ¿Cómo leer la entrada de una cámara web en C++?
- 21. ¿Cómo me conecto a una cámara web USB en .NET?
- 22. ¿Cómo accedo a la cámara web en una MacBook?
- 23. Acceso a la cámara web sin flash
- 24. Cámara web USB en Android
- 25. iPhone cámara de video de transmisión
- 26. Programación de cámara web en Linux
- 27. Flash: grabación desde la cámara web del usuario
- 28. ¿Hay alguna forma de capturar imágenes desde la cámara web?
- 29. ¿Cómo se permite al usuario seleccionar un dispositivo de grabación de video (cámara web) con OpenCV?
- 30. ¿Cómo obtener transmisiones de video y audio desde cámaras web con Java?
No me resulta claro si está intentando usar una cámara web para grabar su sesión de MATLAB (probablemente no, pero veo personas que lo están haciendo). [Todos mis videos] (http://blogs.mathworks.com/videos) son capturas de pantalla hechas y editadas con Camtasia. – MatlabDoug