Matlab图像采集工具箱:
基本的图像采集流程:
本文通过实现一个简单的运动检测程序来说明创建图像采集程序。
本程序通过对平面上未来图像帧进行像素对像素的比较类完成运动检测。
如果没有物体运动,那么各帧的像素值保持不变。否则,对应像素的值将发生变化。
进行的步骤如下:
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' 'YUY2_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
FramesAcquiredFcn = []
FramesAcquiredFcnCount = 0
StartFcn = []
StopFcn = []
TimerFcn = []
TimerPeriod = 1
TriggerFcn = []
Trigger Settings:
InitialTriggerTime = []
TriggerCondition = none
TriggerFrameDelay = 0
TriggerRepeat = 0
TriggersExecuted = 0
TriggerSource = none
TriggerType = immediate
Acquisition Sources:
SelectedSourceName = input1
Source = [1x1 videosource]
查看当前输入对象的源对象信息:
复制内容到剪贴板代码:get(getselectedsource(vid))
General Settings:
Parent = [1x1 videoinput]
Selected = on
SourceName = input1
Tag =
Type = videosource
Device Specific Properties:
BacklightCompensation = on
Brightness = 0
Contrast = 11
Exposure = -6
ExposureMode = auto
FrameRate = 30.0000
Gain = 34
Gamma = 150
Saturation = 4
Sharpness = 3
WhiteBalance = 6500
WhiteBalanceMode = auto
三、设置对象属性
设置方式如下代码:
复制内容到剪贴板代码:% 设置输入对象属性方式
set(vid,'TriggerRepeat',Inf);
vid.FrameGrabInterval = 5;
% 设置源对象属性方式
vid_src = getselectedsource(vid);
set(vid_src,'Tag','motion detection setup');
6. 获取图像数据
获取了视频输入对象后就可以获取数据了。这是任何图像采集应用的核心,他包含以下步骤:
启动视频输入对象——使用start函数启动对象,为采集图像做准备。
在下面的例子中,start启动视频输入对象,对象在采集到所需数量的帧后停止。
因为例中指定了连续采集,你必须使用stop函数来停止对象。
触发采集——根据指定的触发类型,视频输入对象执行触发采集。
例如,如果你设定了即时触发器,对象将在初始化采集后立即自动进行采集。
本例中,TriggerType设为了'immediate'(默认),并且TriggerRepeat设为无穷,
因此,输入对象自动开始执行触发器,并进行数据帧连续采集。
获取数据到matlab工作区——工具箱在内存缓冲或磁盘文件或二者存储数据,
这由对象的LoggingMode决定。要使用数据,必须先读入到matlab的工作空间中,
使用getdata函数。
复制内容到剪贴板代码:figure; % Ensure smooth display
set(gcf,'doublebuffer','on'); % 用于是图像平滑
start(vid) % 启动对像
while(vid.FramesAcquired<=100)
data = getdata(vid,2); % 获取两帧图像数据
diff_im = imabsdiff(data(:,:,:,1),data(:,:,:,2)); % 两帧相减
imshow(diff_im);
end
stop(vid)
运动检测例
7. 清除工作
复制内容到剪贴板代码:delete(vid)
clear
close(gcf)
![avatar](https://profile-avatar.csdnimg.cn/3542a6830a364bf6a0adb34bfd72ce9d_weixin_42662605.jpg!1)
APei
- 粉丝: 84
- 资源: 1万+
最新资源
- 基于Matlab的通信边缘计算仿真与雷达跟踪算法研究:卡尔曼滤波系列及粒子群路径规划算法改进,基于Matlab的通信边缘计算仿真与雷达跟踪算法研究:卡尔曼滤波及算法改进,Matlab通信边缘计算通信仿
- C语言实现selcet服务端
- 狼群算法:实现柔性车间调度问题的MATLAB解决方案及源码学习资源,狼群算法在柔性车间调度中的优化应用:Matlab源码解析与实践指南,狼群算法求解柔性车间调度matlab版 有源码提供学习 可直接
- 【科研绘图系列】R语言绘制SCI论文图合集
- 基于改进人工鱼群法的机器人路径规划算法MATLAB复现,自适应视野与步长优化及启发选择机制应用,自适应视野与步长改进人工鱼群算法的机器人路径规划算法复现,MATLAB实现无人机、无人车、无人船应用,l
- 基于组态王的水蓄冷中央空调变频器控制系统设计组态方案,基于组态王的水蓄冷中央空调变频器控制系统设计组态方案,组态王设计变频器的水蓄冷中央空调控制系统设计组态设计 ,组态王设计; 变频器; 水蓄冷中央
- 永磁同步电机直接公式法计算:弱磁控制与最大转矩电流比(MTPA)结合应用 详细涵盖内环到外环电流环仿真步骤,参数变化影响解析,结合MATLAB实现的注意事项及独特补充内容 ,永磁同步电机公式法计算:M
- 三相逆变器下垂控制:负载突变分析与控制阶跃响应曲线图集(附结构控制图),三相逆变器下垂控制详解:负载突变分析与控制阶跃响应曲线图集(附结构图),三相逆变器之下垂控制?负载突变分析 图一控制阶跃信号为0
- python中国政府采购网爬虫
- 简历系统(基于springboot,mysql,java).zip
- the last-个人-计划备选
- Optislang电机:多目标协同优化NVH优化模型的实践与应用,基于Optislang技术的多目标优化电机NVH性能优化模型,Optislang电机 多目标优化电机NVH优化模型 ,Optislan
- 正激式小功率开关电路与开环闭环电压控制仿真对比研究:基于Matlab仿真平台的具体参数解析与效果评估,深入探究:正激式小功率开关电路Matlab仿真及其开环与闭环(电压闭环)对比仿真过程与具体参数详解
- 基于灰狼优化算法的支持向量机(GWO-SVM)教程:适合新手学习的完整代码实现,包含注释和可直接运行的数据接入,灰狼算法优化的支持向量机(GWO-SVM):适合新手学习,代码齐全,注释丰富,轻松运行
- 基于MATLAB Simulink的光伏逆变器低电压穿越仿真模型,采用boost加NPC拓扑结构与SVPWM控制,实现正负序分离及pll控制,基于MATLAB Simulink的光伏逆变器低电压穿越仿
- 交错并联Boost PFC仿真电路模型:双闭环控制方式下的输出电压与电感电流优化控制,优良波形及Simulink仿真实现,交错并联Boost PFC仿真电路模型:双闭环控制方式下的电压外环与电感电流内
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)