MATLAB中利用摄像头抓图进行编程

整个过程我们需要做如下几件事情:

(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

原文地址:https://www.cnblogs.com/siahekai/p/11000835.html