• 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

  • 相关阅读:
    面向对象方法的重载(overloading)和覆盖(overriding)。
    注意:在对象变量中存放的是引用(地址);在简单变量中存放的是数值。
    类方法中的一类特殊方法:构造方法。
    在用面向对象思想开发的过程中,可以复用对象就进行复用,如无法进行复用则开发新的对象。
    对于对象的要求:高内聚、低耦合,这样容易拼装成为一个系统。
    为什么要使用面向对象:
    什么是对象:EVERYTHING IS OBJECT(万物皆对象)
    Java如何在指定端口创建套接字?
    Java如何查找系统的代理设置?
    Java如何检查端口是否被使用?
  • 原文地址:https://www.cnblogs.com/siahekai/p/11000835.html
Copyright © 2020-2023  润新知