进行的步骤如下:

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)

利用MATLAB视频函数工具箱的…相关推荐

  1. matlab模拟线圈电磁场,利用MATLAB的PDE工具箱对电场和磁场进行模拟

    中学物理Vol. 32 No.巧 疑的态度,认为弊大于利,笔者认为这些想法不无道理,只是大家的关注点应该在于如何更好发挥它的优势,而避免它的不足.在实践的过程中笔者有以下心得和体会,与大家分享: 3, ...

  2. matlab运行函数的过程,关于matlab的一些作业一、要求写出窗口运行过程及结果1.利用Matlab求函数f(x)=-x2+ex+lnx的导数、...

    共回答了20个问题采纳率:90% 代码 function main() % 一.要求写出窗口运行过程及结果 % % 1.利用Matlab求函数f(x)=-x2+ex+lnx的导数.不定积分和1到10区 ...

  3. 利用matlab绘制函数图像

    文章目录 一.下载matlab.rar 二.解压缩matlab.rar 三.启动matlab窗口 四.绘制一元函数图像 - 直线或曲线 1.绘制直线 2.绘制曲线 五.绘制二元函数图像 - 平面或曲面 ...

  4. 求二元函数最大值matlab,利用matlab, 二元函数求最大值

    求二元函数 z=0.2323*x^2-0.2866^2+2*(-0.5406)*a0^2+1.0203*a0^2*x^2/((x^2+y^2)^0.5*tanh(2*(x^2+y^2)^0.5)-x^ ...

  5. 利用matlab进行函数大小比较_巧用二次函数的性质比较数值大小

    比较二次函数值的大小是二次函数图像与性质应用的重要题型之一,是中考的热点. 要熟练准确地解决这类问题,同学们要理解二次函数的增减性.能画出图像的大致位置,会确定对称轴,还要掌握解决这类问题的一般方法和 ...

  6. matlab负荷分配程序,利用MATLAB工具箱进行机组负荷优化分配

    火电厂利用负荷优化分配算法,在全厂机组组合方式一定的情况下,根据各运行机组的煤耗特性,合理分配机组所带负荷,可以使全厂总的煤耗量最小[1],从国内外调度经验可知,热效率可提高1%~2.5%.优化算法代 ...

  7. 用matlab计算稳态误差,利用Matlab求稳态误差的两种方法.

    利用Matlab求稳态误差的两种方法 摘要:稳态误差是系统控制精度或抗扰动能力的一种度量,它是稳态性能的一个重要指标.本文介绍利用Matlab的控制系统工具箱和Simulink工具箱求取系统误差稳态的 ...

  8. 用matlab求函数极限,matlab求解极限问题(limit函数的用法)

    本文介绍利用MATLAB求解函数或序列的极限问题,顺便介绍limit函数的用法.内容主要包括单变量函数的极限和多变量函数的极限. 目录 单变量函数的极限 极限的定义 普通极限 L=lim⁡x→x0f( ...

  9. matlab一般函数的绘制方法,基于MATLAB的函数图像绘制方法

    C DOI:10.16707~.cnki.fjpc.2017.01.084 E 晒 亍嚣 基于 MATLAB的函数图像绘制方法 张笑笑 一,童 键 z (1湖南省长沙市第一中学 湖南 长沙 410() ...

  10. matlab ar 函数确阶,matlabar模型阶数

    基于Matlab用时间序列的最小二乘估计和FPE.AIC.BIC准则对AR(n)模型进行参数估计.用实例说明运用Matlab进行AR(n)参数估计,编程简单,分析直观. ...... 本文针对 AR ...

最新文章

  1. 金蝶K3很有意义的数字3
  2. (笔试题)不用除法操作符,实现两个整数的除法
  3. xshell中mysql命令大全_Linux之Xshell脚本代码实例
  4. C# .NET 使用第三方类库DotNetZip解压/压缩Zip文件
  5. ldap集成nginx
  6. 700多位老人的“智慧”养老记
  7. mysql中如何将默认用户名root改成其他?
  8. unity 常用函数
  9. Mybatis XML文件如何编写In语句
  10. 使用原生js将轮播图组件化
  11. 为什么古诗我们能读懂,白话诗却一头雾水呢?
  12. kb2919355无法安装
  13. 超声波测距实验-传感器原理及应用实验
  14. 使用键盘操作将桌面计算机图标隐藏,windows7系统中怎么隐藏桌面图标提高工作效率保持桌面整洁...
  15. STM32一体化步进电机驱动器控制步进电机
  16. HTML+CSS 仿QQ邮箱登录界面
  17. 北大青鸟 某百货商场当日他在消费积分最高的八名顾客,他们的积分分别是18,25,7,36,13,2,89,63.编写程序找出的积分及他在数组中的下标
  18. 如何在 JavaScript 中使用SpreadJS导入和导出 Excel 文件
  19. 使用 Byzanz 录制 Gif 动画或 Ogv 视频
  20. 阿里的数据分析技术有多强?从优酷的大数据架构中,我学到了这些

热门文章

  1. Cryengine5.3
  2. 使用SharedPreferences保存list
  3. 国外知名广告联盟平台
  4. 交互式电子白板android,交互式电子白板教学应用
  5. 简单典型二阶系统_【文献选译】二阶弹性波动方程PML的简单实现
  6. signature=8df1e41f626c2f25b2dd4e97b89cc127,来用百度密语吧!!!
  7. Outlook显示ost has reached maximum size
  8. 互金平台乘着东风股价反弹,小赢科技为何成上涨“急先锋”?
  9. 看的见的算法——三门问题
  10. java咖啡平台,22年最新