matlab usb摄像头---实时视频---等间隔时间提取图片

(1)基础:

  1.在附加功能里添加OS Generic Video Interface
  2.查询电脑摄像头参数imaqhwinfo 有时适配器可能是同一个,
    RGB颜色空间中,每种颜色都可以用三个变量来表示,为红色、绿色、蓝色的强度
    YUV颜色空间中,“Y”代表明亮度(Luma);“U”和“V”表示色度(Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色;在YUV颜色空间中,图片是通过复合模式存储的.由于不同颜色空间的存储量不同,因此运算速度也不相同;RGB24最慢,应必避免使用;最快为YV12,其次是YUY2,YV12的数据存储量仅占RGB32的一半

(2)创建对象:

obj = videoinput(adaptorname,deviceID,format)

(3)显示视频:

  vidRes = get(obj, 'VideoResolution'); 

  nBands = get(obj, 'NumberOfBands'); 

  figure()%指定预览窗体显示的figure

  axes()%指定预览窗口显示的坐标系

  hImage = image( zeros(vidRes(2), vidRes(1), nBands) ); 

  preview(obj, hImage);

(4)保存图片:

  frame = getsnapshot(obj);%获取视频的一帧

  imshow(frame);%显示获取那一帧

  imwrite(frame,'snap.jpg','jpg');

(5)整个程序:实现实时视频定时间隔提取图片

obj=videoinput('winvideo',2,'YUY2_640x480');%创建视频对象
set(obj,'TriggerRepeat',Inf);%设定触发次数
set(obj,'FramesPerTrigger',1);%设定每次触发捕获帧数
set(obj,'FrameGrabInterval',1);%设定捕获帧的时间间隔(默认的是1,即每一帧都抓取;如果设置为3,则每3帧取一帧)
objres=get(obj,'VideoResolution');%得到视频分辨率
nBands=get(obj,'NumberOfBands');%得到色彩数目(rgb是相当于是三通道)
hImage=image(zeros(objres(2),objres(1),nBands));
preview(obj,hImage);;%预览
t=clock;
n=1;
tic;
while n<31%提取图片的个数
if etime(clock,t)>=0.1; %电脑时间循环提取图片,还有cputime函数也可完成时间循环,用法相同,只不过它是根据CPU主频计算的
t=clock;
frame=getsnapshot(obj);
a=ycbcr2rgb(frame);
str=['capture',num2str(n),'.jpg'];
imwrite(a,str,'jpg');
n=n+1;
end
end
toc;

你可能感兴趣的:(matlab,image)