(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;