Matlab环境下使用USB2.0摄像头编程image acquisition tools(读书笔记)

(1)Matlab环境下使用USB2.0摄像头编程

Matlab中的图像获取工具箱给我们提供了必要的函数,我们直接调用就可以了,主要就是简单的介绍如何使用该工具箱进行对USB2.0摄像头的编程。

        

TAG: USB摄像头  Matlab 

 

 

Matlab中的图像获取工具箱给我们提供了必要的函数,我们直接调用就可以了。在这帖中我们主要就是简单的介绍如何使用该工具箱进行对USB2.0摄像头的编程

 

废话不多说,我们开始言归正传了。但是一定记住你必须安装了PC摄像头才可以进行下面的东西,如果说首次安装摄像头最好重启下PC,否则可能出现没法识别摄像头。

 

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

1、查询USB2.0Camera 的具体参数(imaqhwinfo)

2、创建视频输入对象(videoinput)

3、图像预览和显示(preview、stoppreview、closepreview和image)

4、获取视频图像(getsnapshot)

5、图像获取设备的获取和设置(get和set)

6、关闭视频对象(delete)

 

在正式讲解之前,我想说明下几个在图像获取工具箱中的术语:

 

图像获取设备:比如摄像头、扫描仪

图像获取适配器:主要的目的是通过驱动在Matlab和图像获取设备之间传递信息

ROI:region-of-interest 感兴趣区域

 

再说说几个常用的函数,我们这里只是说明它的作用,具体如何使用参考帮助系统

getselectedsource

imaqfind

isvalid

peekdata

getdata

imaqmontage

查询USB2.0Camera的具体参数

给我们一个摄像头我们必须知道他的相关参数,才可能进行我们的编程下。当然我们可以查询商家手册,但是那个累不累人呀。

 

Matlab的图像获取工具箱为我提供了imaqhwinfo(),来获取PC上以安装的图像获取硬件信息

 

 

没有输入参数时,返回一个结构体, 它包含了系统中存在的适配器和Matlab相关的版本信息( 第一次我们一般使用这个)

>> info=imaqhwinfo

 

info =

 

   InstalledAdaptors: {'coreco' 'winvideo'}%这里可以看到我的PC上安装了两个适配器

       MATLABVersion: '7.6 (R2008a)'

         ToolboxName: 'Image Acquisition Toolbox'

      ToolboxVersion: '3.1 (R2008a)'

复制代码

有输入参数的时候,返回一个结构体,包含了指定的适配器的数据信息

>> win_info=imaqhwinfo('winvideo')%我们看看第二适配器的具体参数

 

win_info =

 

      AdaptorDllName: [1x81 char]%适配器dll文件绝对路径

   AdaptorDllVersion: '3.1 (R2008a)'%适配器dll文件版本

         AdaptorName: 'winvideo'%适配器名称

           DeviceIDs: {[1]}%设备ID号,这个我们经常需要用到

          DeviceInfo: [1x1 struct]%设备信息,这里主要是图像获取设备的一些参数,比较重要

 

%====================下面我们了解下,这个图像获取设备到底有哪些的详细信息吧====================

 

>> win_info.DeviceIDs

 

ans =

 

   [1]

 

>> dev_win_info=win_info.DeviceInfo

 

dev_win_info =

 

         DefaultFormat: 'RGB24_320x240'%获取图片的默认格式

   DeviceFileSupported: 0

            DeviceName: 'USB PC CAMERA P227'%设备名称

               DeviceID: 1%设备号

     ObjectConstructor: 'videoinput('winvideo', 1)'%对象构建方式,这个绝大部分都是一样的

      SupportedFormats: {1x12 cell}%获取的图像支持格式,一般都有好多种,上面的DefaultFormat只是默认格式而已

 

%==================================看看图像获取设备支持的图像格式==================================

 

>> dev_win_info.SupportedFormats%可以看到我的PC上的摄像头支持下面12中图片格式

 

ans =

 

 Columns 1 through 5

 

   'I420_160x120'   'I420_176x144'   'I420_320x240'    'I420_352x288'    'I420_640x480'

 

 Columns 6 through 9

 

   'RGB24_1280x960'   'RGB24_160x120'    'RGB24_176x144'    'RGB24_320x240'

 

 Columns 10 through 12

 

   'RGB24_352x288'   'RGB24_640x480'    'RGB24_800x600'

视频预览、采集和保存

(1)创建视频输入对象

obj =videoinput(adaptorname,deviceID,format)

adaptorname:适配器名称,首次可以使用不带参数的imaqhwinfo函数获取

deviceID:设备ID号,首次可以通过imaqhwinfo函数获取

format:视频采集格式,可以通过DeviceInfo的SupportedFormats获取,不填写则使用默认格式

>> obj =videoinput('winvideo',1,'RGB24_320x240')%这里我们使用默认的视频采集格式

 

Summary of Video Input Object Using 'USB PCCAMERA P227'.

 

  Acquisition Source(s):  input1 isavailable.

 

 Acquisition Parameters:  'input1'is the current selected source.

                           10 frames pertrigger using the selected source.

                           'RGB24_320x240'video data to be logged upon START.

                           Grabbing first ofevery 1 frame(s).

                           Log data to 'memory'on trigger.

 

     Trigger Parameters:  1 'immediate'trigger(s) on START.

 

                  Status:  Waiting for START.

                           0 frames acquiredsince starting.

                          0 frames availablefor GETDATA.

(2)打开视频预览窗口

himage=preview(obj,himage)

obj:视频采集对象

himage:视频预览窗口对应的句柄,也就是说在指定的句柄对象中预览视频,该参数可以空缺

至于预览窗口的关闭和停止可以使用colsepreview和stoppreview函数

vidRes = get(obj, 'VideoResolution');

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指定;w图像宽度,由ROIPosition指定;B索线个数,由NumberOfBands指定

frame = getsnapshot(obj);%获取视频的一帧

imshow(frame);%显示获取那一帧

imwrite(frame,'snap.jpg','jpg');

 

 

(2)

Matlab摄像头数据采集

www.diybl.com    时间 : 2010-07-10  作者:网络   编辑:huyang629点击:  24 [ 评论 ]




1、  查询USB2.0Camera 的具体参数 
输入 imaqInfo = imaqhwinfo 
  返回信息 
         InstalledAdaptors: {'winvideo'} 
        MATLABVersion: '7.1 (R14SP3)' 
          ToolboxName: 'Image Acquisition Toolbox' 
       ToolboxVersion: '1.9 (R14SP3)' 
输入imaqInfo.InstalledAdaptors 
   返回信息 
       ans = 
  
'winvideo' 
   输入winvideoinfo = imaqhwinfo('winvideo') 
      返回信息 
       winvideoinfo = 
  
       AdaptorDllName: [1x76 char] 
    AdaptorDllVersion: '1.9 (R14SP3)' 
          AdaptorName: 'winvideo' 
            DeviceIDs: {[1]} 
           DeviceInfo: [1x1 struct] 
输入 winvideoinfo.DeviceInfo 
    返回信息 
        
ans = 
  
          DefaultFormat: 'YUY2_160x120' 
    DeviceFileSupported: 0 
             DeviceName: 'USB 视频设备' 
               DeviceID: 1 
      ObjectConstructor: 'videoinput('winvideo', 1)' 
       SupportedFormats: {1x5 cell} 
输入device1 = winvideoinfo.DeviceInfo(1) 
    返回信息 
        
device1 = 
  
          DefaultFormat: 'YUY2_160x120' 
    DeviceFileSupported: 0 
             DeviceName: 'USB 视频设备' 
               DeviceID: 1 
      ObjectConstructor: 'videoinput('winvideo', 1)' 
       SupportedFormats: {1x5 cell} 
输入device1.DeviceName 
    返回信息 
        ans = 
  
USB 视频设备 
输入device1.DeviceID 
    返回信息 
        
ans = 
  
     1 
输入device1.DefaultFormat 
    返回信息 
        ans = 
  
YUY2_160x120 
输入device1.SupportedFormats 
    返回信息 
    Columns 1 through 4 
  
    'YUY2_160x120'    'YUY2_176x144'    'YUY2_320x240'    'YUY2_352x288' 
  
    Column 5 
  
    'YUY2_640x480' 
2、  最简单采集实验,输入如下代码,可以得到预览下的默认格式的摄像头捕捉窗口 
obj=videoinput('winvideo',1); 
preview(obj); 
3、  输入如下代码 
    % Access an image acquisition device. 
vidobj = videoinput('winvideo',1,'YUY2_640x480'); 
sources = vidobj.Source; 
whos sources 
  
set(vidobj,'SelectedSourceName','input1'); 
sources 
selectedsrc = getselectedsource(vidobj); 
get(selectedsrc); 
delete(vidobj); 
clear vidobj; 
  
返回信息 
    Name          Size                    Bytes  Class 
  
  sources       1x1                       726  videosource object 
  
Grand total is 30 elements using 726 bytes 
  
  
   Display Summary for Video Source Object: 
  
      Index:   SourceName:   Selected: 
      1        'input1'      'on'     
  
  General Settings: 
    Parent = [1x1 videoinput] 
    Selected = on 
    SourceName = input1 
    Tag = 
    Type = videosource 
  
  Device Specific Properties: 
    BacklightCompensation = on 
    Brightness = -16 
    Contrast = 120 
    FrameRate = 30.0000 
    Gamma = 60 
    Hue = 0 
    Saturation = 40 
Sharpness = 3 
  
4、  输入如下代码 
clc; 
clf; 
clear all; 
imaqmem(30000000);               %申请内存空间 
%ADAPTOR:MATLAB与视频设备之间的接口,主要的目的是传递信息 
  
vid = videoinput('winvideo', 1, 'YUY2_640x480'); 
preview(vid); 
start(vid); 
h=figure('NumberTitle','off','Name','视频',... 
    'MenuBar','none','color','c',... 
    'Position', [0, 0, 1, 1], 'Visible', 'on');         %新建窗口 
set(h,'doublebuffer','on','outerposition',get(0,'screensize')); 
h1=axes('Position', [0.02, 0.1, 0.4, 0.8],'Parent',h); %新建显示窗口 
hold on; 
axis off; 
while ishandle(h)     %判断是否有效的图像对象句柄 
    a=getsnapshot (vid);     % 捕获图像 
    flushdata(vid);     %清除数据获取引擎的所有数据、置属性SamplesAvailable为0 
    imshow(a);                   %显示图像 
    drawnow;                     % 实时更新图像 
end; 
delete(vid);

  • 2
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
引用\[1\]:Image Acquisition Toolbox是MATLAB的一个产品,用于图像和视频的采集和处理。它提供了一系列函数和工具,可以与各种图像和视频设备进行交互,包括相机、摄像机和其他图像采集设备。\[1\]引用\[2\]:在Windows上,MATLAB Image Acquisition Toolbox可以与Lucid Vision Labs的相机一起使用。Lucid Vision Labs提供了关于如何在Windows上使用MATLAB Image Acquisition Toolbox的指南。\[2\]引用\[3\]:对于Daheng Mercury USB3相机,MATLAB Image Acquisition Toolbox也提供了支持。可以通过iTeckTech网站上的指南了解如何在MATLAB使用Daheng Mercury USB3相机。\[3\] 问题: MATLAB Image Acquisition Toolbox可以用于哪些相机? 回答: MATLAB Image Acquisition Toolbox可以与各种相机进行集成,包括Lucid Vision Labs的相机和Daheng Mercury USB3相机。\[2\]\[3\]它提供了与这些相机进行交互的函数和工具,使用户能够方便地进行图像和视频的采集和处理。 #### 引用[.reference_title] - *1* *2* *3* [Matlab 图像采集工具的使用 - Image Acquisition Toolbox【IAT】 + 大恒相机的应用【1】+多个摄像头支持](https://blog.csdn.net/yellow_hill/article/details/122126376)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值