MATLAB 摄像头视频获取和保存

一、读取摄像头视频

    如题目,首先你需要有一个摄像头(usb或者本本自带的都可以)并且安装好了驱动,保证设备可以正常使用。

    先来段简单的通过MATLAB显示摄像头视频的代码:

vid = videoinput('winvideo',1);
preview(vid);

  通过上面两段代码就可以看到摄像头里面的画面。

  第1行代码是通过videoinput()创建视频输入对象,第2行显示所创建的视频对象,就这么简单是不。

  看到的画面是彩色的吧,如果想体验一下熊猫的视觉观怎么办。加命令呗:

set(vid,'ReturnedColorSpace','grayscale');

    变回原来的彩色世界,只需要把 set 里面设置属性的参数‘grayscale’ 改为 ‘rgb’ 就OK。

set(vid,'ReturnedColorSpace','grayscale');


二、获取某时刻摄像头中的画面

    直接上代码:

frame = getsnapshot(vid);
figure;imshow(frame);

  getsnapshot(vid)得到表示视频对象vid当前时刻画面的图像矩阵。


三、保存视频

    保存视频的原理其实是把摄像头中各个时刻的画面连接起来组成视频,然后对其进行保存。

writerObj = VideoWriter( [filename '.avi'] );
writerObj.FrameRate = N;
open(writerObj);

figure;
for ii = 1: nframe
    frame = getsnapshot(vid);
    imshow(frame);
    f.cdata = frame;
    f.colormap = [];
    writeVideo(writerObj,f);
end

close(writerObj);

    第1行中通过VideoWriter()函数创建 filename.avi 的视频文件,第二行设置视频文件的帧率(每秒钟的帧数)。

    剩下的就是通过 <读取——写入>的过程录制视频了。保存视频的m函数写好啦,在第四部分可以找到下载链接。

 

四、深入了解

  如果运行开始的两行命令就报错,那就继续往下看吧。

  如果有了前面的命令你觉得足够了,下面就不用看了。

  知己知彼:了解摄像头的属性:

cam_info = imaqhwinfo('winvideo');

    imaqhwinfo()函数返回的是一个结构体,里面比较重要的是 DeviceID 和 DeviceInfo。DeviceID存储着电脑上所有可用摄像头的ID,每个ID对应一个摄像头。DeviceInfo中存储着每个摄像头的信息,这里面我们最关心的就是摄像头所支持的视频格式。以我的usb摄像头为例,通过下面代码,得到摄像头的ID和支持的视频格式:

cam_info = imaqhwinfo('winvideo');
cam_info.DeviceInfo.DeviceID
cam_info.DeviceInfo.SupportedFormats 

    得到摄像头的ID为:1

    对应的的五种视频格式:

'YUY2_160x120'    'YUY2_176x144'    'YUY2_320x240'    'YUY2_352x288'    'YUY2_640x480'

    如果有多摄像头的话,那就每个ID对应相应的视频格式。

 

    知道每个摄像头的具体参数后,就可以创建我们需要的摄像头的视频对象了,把前面<一>中的代码改为:

vid = videoinput('winvideo',1,'YUY2_640x480');

    上面就是创建ID为1的摄像头的视频对象,视频格式是 YUY2_640x480,这表示视频的分辨率为640x480。


  开始的准备工作就这些,结合前面所讲的,下面贴一个 <读取-显示-保存>的例子。文中需要调用的MakeVideo.m文件在这里

clear all; clc
closepreview
vid = videoinput('winvideo',1,'YUY2_640x480');
preview(vid);
filename = 'film';
nframe = 120;       
nrate = 30;
MakeVideo(vid, filename, nframe, nrate, 1)

OK!用MATLAB读取摄像头的视频文件并保存就这么实现了,大功告成,开始自拍吧 bb~

注:文章转自http://www.cnblogs.com/alphashi/archive/2013/04/13/3019146.html

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值