打印

又来求教!matlab识别usb的问题

[复制链接]
1302|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
whanwant1|  楼主 | 2016-7-18 22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为什么只能识别自己的摄像头,问题1:用外置摄像头插在笔记本上 ,电脑可以识别可以用,但matlab识别不了
问题2:cmos摄像头做的电路板,插在笔记本上,电脑也已经识别了,但就是matlab识别不了,问:如何解决

info=imaqhwinfo
info =
    InstalledAdaptors: {'winvideo'}
        MATLABVersion: '8.3 (R2014a)'
          ToolboxName: 'Image Acquisition Toolbox'
       ToolboxVersion: '4.7 (R2014a)'

相关帖子

沙发
whanwant1|  楼主 | 2016-7-19 08:47 | 只看该作者
有人么

使用特权

评论回复
板凳
gaoyang9992006| | 2016-9-21 18:38 | 只看该作者
整个过程我们需要做如下几件事情:
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 PC CAMERA P227'.
  •    Acquisition Source(s):  input1 is available.
  •   Acquisition Parameters:  'input1' is the current selected source.
  •                            10 frames per trigger using the selected source.
  •                            'RGB24_320x240' 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.

复制代码
(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');

复制代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

10

帖子

0

粉丝