没有合适的资源?快使用搜索试试~ 我知道了~
matlab捕捉摄像头图像.doc
需积分: 10 4 下载量 201 浏览量
2014-05-07
12:22:00
上传
评论
收藏 163KB DOC 举报
温馨提示
Matlab中的图像获取工具箱给我们提供了必要的函数,我们直接调用就可以了。我们主要就是简单的介绍如何使用该工具箱进行对USB2.0摄像头的编程
资源推荐
资源详情
资源评论
matlab 中有关于摄像头捕捉部分的内容,在 image acquisition toolbox 中,大
家可以查看 matlab 的帮助文档进行学习。
1. 首先要安装硬件设备,就像显卡和 usb camera 等七七八八的硬件设备。
2.查询硬件信息,关于这个的内容,csdn 上有一个 blog 说的比较详细了,我不
再多说了。
3.Create a Video Input Object,这主要是调用 videoinput 该函数,这个函数有
3 个参数,适配器名字的参数是必备的,其他都可以默认,这个函数大家稍微
研究研究,参考着前两步就能搞定。
4. 预览图像,你可能需要查看图像是否能令你满意,例如你想调整摄像头焦点
的位置,改变光照,对摄像头做某些改变。
5.等预览过图像后,我们就需要对一些属性进行配置,例如用于捕获图像,把
图像存到磁盘上等等配置。
6. 开始捕获图像
7.清除。
首先我们需要介绍的是触发,触发主要是用于图像的
收集。我们前面介 Create a Video Input Object,接
着我们可以预览图像,接下来我们会对创建图像的某
些属性进行设置,这里面最重要的就是触发属性。它
主要配置的是什么时候开始收集数据
其次是 logging 属性,它主要配置的是装载到什么位
置,例如,磁盘,内存等等。下面看我写的一段代码:
aviobj = avifile( 'datalog6.avi');
%上面一行主要用于创建一个 avi 文件,并且保存到
磁盘上。
vid = videoinput('winvideo',1,'RGB24_640x480');
%Create a Video Input Object
vid.LoggingMode = 'disk&memory';
vid.DiskLogger = aviobj;
%设置 vid 的存储模式为磁盘和内存模式,然后把 avi 的句柄传给 vid.DiskLogger
preview(vid);
%预览图像
triggerconfig(vid,'manual');
%设置触发为人为模式
set(vid,'FramesPerTrigger',100);
%每次触发为 100 帧图像
start(vid);
%该行是触发所必须的
trigger(vid);
%触发
while get(vid,'DiskLoggerFrameCount') ~= 100
wait(vid);
end
%由于写磁盘比较慢,必须等待 VID 执行,把一百帧图像写到磁盘上»»»
aviobj = close(vid.DiskLogger);
delete(vid);
基本的图像采集流程
本文通过实现一个简单的运动检测程序来说明创建图像采集程序。本程序通过
对平面上未来图像帧进行像素对像素的比较类完成运动检测。如果没有物体运
动,那么各帧的像素值保持不变。否则,对应像素的值将发生变化。
进行的步骤如下:
1. 安装并配置图像采集设备
2. 获取在图像采集工具箱中能唯一标识此图像采集设备的信息,此信息在创建
视频输入对象时要用到。这些信息包括:Adaptor name 软件适配器名,Device
ID 硬件设备的 ID,Video format 视频格式。
imaqhwinfo 用于检测适配器名,我的电脑安装了一个 USB 摄像头,所以检测
到一个安装了的适配器'winvideo'。之后可以使用这个适配器名连接视频采集设
备。
复制内容到剪贴板代码:imaqhwinfo
ans =
InstalledAdaptors: {'winvideo'}
MATLABVersion: '7.0 (R14)'
ToolboxName: 'Image Acquisition Toolbox'
ToolboxVersion: '1.5 (R14)'
要查看特定设备的设备 ID,可使用如下命令:
复制内容到剪贴板代码:info = imaqhwinfo('winvideo')
info =
AdaptorDllName: 'D:\MATLAB7\toolbox\imaq\imaqadaptors\win32\
mwwinvideoimaq.dll'
AdaptorDllVersion: '1.5 (R14)'
AdaptorName: 'winvideo'
DeviceIDs: {[1][2]}
DeviceInfo: [1x2 struct]
在上面的 DeviceIDs 可以看到两个数组,每一个代表一个设备,我的摄像头设
备为:USB 视频设备 #2,这里可能就对应着[2],【对应的是 1,哈哈】。
要继续获得更多有关设备的信息可以如下进行:
复制内容到剪贴板代码:dev_info = imaqhwinfo('winvideo', 1)
复制内容到剪贴板代码:dev_info2 = imaqhwinfo('winvideo', 2)
我的电脑返回信息如下:
dev_info =
DefaultFormat: 'YUY2_640x480'
DeviceFileSupported: 0
DeviceName: 'USB 视频设备'
DeviceID: 1
ObjectConstructor: 'videoinput('winvideo', 1)'
SupportedFormats:
{'YUY2_640x480''YUY2_352x288''YUY2_320x240''YUY2_176x144''YUY
2_160x120'}
(这个应该是我的战车摄像头)
dev_info2 =
DefaultFormat: 'RGB24_640x480'
DeviceFileSupported: 0
DeviceName: 'Vimisoft Camera'
DeviceID: 2
ObjectConstructor: 'videoinput('winvideo', 2)'
SupportedFormats: {1x9 cell}
(这个应该是软件的什么东西?)
3. 创建视频输入对象
使用 videoinput 函数创建视频输入对象,此函数使用上步得到的适配器名、设
备 ID 和设定的视频格式创建对象。这里只需要适配器名,videoinput 函数使用
默认的设备 ID 和视频格式。
复制内容到剪贴板代码:vid = videoinput('winvideo')
Summary of Video Input Object Using 'USB 视频设备'.
Acquisition Source(s):input1 is available.
Acquisition Parameters:'input1' is the current selected source.
10 frames per trigger using the selected source.
'YUY2_640x480' video data to be logged upon START.
Grabbing first of every 1 frame(s).
Log data to 'memory' on trigger.
Trigger Parameters:1 'immediate' trigger(s) on START.
Status:Waiting for START.
0 frames acquired since starting.
0 frames available for GETDATA.
4. 预览视频流
为了是视频符合你的要求,你可以先进行预览,然后根据需要调节摄像设备的
位置、光照、对焦或其他调整。
复制内容到剪贴板代码:preview(vid)
这时将弹出视频预览窗口,里面是实时监控图像。
复制内容到剪贴板代码:closepreview(vid)
命令可以关闭预览窗口。
5. 配置视频对象的属性
一、图像采集对象的类型
工具箱使用两种类型对象来表示与视频设备的连接:
Video input objects 视频输入对象
Video source objects 视频源对象
Video input objects 是 Matlab 与视频设备在高层次的连接,这一层次抽象了各
个设备的差异,提供相同的属性支撑。使用 videoinput 创建此类对象。
当创建一个视频输入对象时,工具箱自动创建一个或多个 Video source objects
视频源对象与之关联。每个视频源对象代表一个或多个作为一个单独整体看待
的物理数据源的集合。源对象的数量依赖于视频设备和设定的视频格式。同一
时刻,只有一个视频源被激活用来获取数据。
二、查看对象属性
使用 get 函数查看视频输入对象的属性,如
复制内容到剪贴板代码:get(vid)
我的电脑输出结果如下:
General Settings:
DeviceID = 1
DiskLogger = []
DiskLoggerFrameCount = 0
EventLog = [1x0 struct]
FrameGrabInterval = 1
FramesAcquired = 0
FramesAvailable = 0
FramesPerTrigger = 10
Logging = off
LoggingMode = memory
> NumberOfBands = 3
Previewing = off
ReturnedColorSpace = YCbCr
ROIPosition = [0 0 640 480]
Running = off
Tag =
Timeout = 10
Type = videoinput
UserData = []
VideoFormat = YUY2_640x480
VideoResolution = [640 480]
Callback Function Settings:
ErrorFcn = @imaqcallback
剩余26页未读,继续阅读
资源评论
shengwensente
- 粉丝: 0
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功