整个过程我们需要做如下几件事情:
(1) 查询USB2.0Camera的具体参数(imaqhwinfo)
(2) 创建视频输入对象(videoinput)
(3)图像预览和显示(preview、stoppreview、closepreview和image)
(4) 获取视频图像(getsnapshot)
(5) 图像获取设备的获取和设置(get和set)
(6) 关闭视频对象(delete)
1、imaqhwinfo() %获取PC上已安装的图像获取硬件设备的信息
没有输入参数时,返回一个结构体,它包含了系统中存在的适配器和Matlab相关的版本信息(第一次我们一般使用这个)
>>info=imaqhwinfo
info =
InstalledAdaptors: {'coreco''winvideo'} %这里可以看到我的PC上安装了两个适配器
MATLABVersion: '7.6 (R2008a)'
ToolboxName: 'Image AcquisitionToolbox'
ToolboxVersion: '3.1 (R2008a)'
有输入参数的时候,返回一个结构体,包含了指定的适配器的数据信息
代码:
>>win_info=imaqhwinfo('winvideo')
win_info =
AdaptorDllName: [1x81 char]%适配器dll文件绝对路径
AdaptorDllVersion: '3.1 (R2008a)'%适配器dll文件版本
AdaptorName: 'winvideo' %s适配器名称
DeviceIDs: {[1]} %设备ID号,这个我们经常需要用到
DeviceInfo: [1x1 struct]%设备信息,这里主要是图像获取设备的一些参数,比较重要要想知道设备详细信息可以采用如下方式
要想知道设备某个属性信息的信息可以采用.方式,如下:
win_info.DeviceInfo
视频预览、采集和保存
(1)创建视频输入对象
obj =videoinput(adaptorname,deviceID,format)
%adaptorname:适配器名称,首次可以使用不带参数的imaqhwinfo函数获取
%deviceID:设备ID号,首次可以通过imaqhwinfo函数获取
%format:视频采集格式,可以通过DeviceInfo的SupportedFormats获取,不填写则使用默认格式
>> obj =videoinput('winvideo',1,'RGB24_320x240') %这里我们使用默认的视频采集格式
(2)打开视频预览窗口
himage=preview(obj,himage)
% obj:视频采集对象
%himage:视频预览窗口对应的句柄,也就是说在指定的句柄对象中预览视频,该参数可以空缺。至于预览窗口的关闭和停止可以使用colsepreview和stoppreview函数
vidRes = get(obj, 'VideoResolution'); %VideoResolution= [Width Height]
nBands = get(obj, 'NumberOfBands');
figure() %指定预览窗体显示的figure
axes() %指定预览窗口显示的坐标系
hImage = image( zeros(vidRes(2),vidRes(1), nBands) );
preview(obj, hImage);
(3)图像捕捉、显示和保存
%frame是H×W×B的矩阵。H图像高度,由ROIPosition(region-of-interest)指定;w图像宽度,由ROIPosition指定;B索线个数,由NumberOfBands指定
frame = getsnapshot(obj);
imshow(frame); % image(frame)
imwrite(fame,'snap.jpg','jpg');
delete(obj)
原文见于http://blog.sina.com.cn/s/blog_877232310100tduo.html