Skip to main content

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

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相关的版本信息( 第一次我们一般使用这个)
  1. >> info=imaqhwinfo
  2.  
  3. info =
  4.  
  5.     InstalledAdaptors: {'coreco'  'winvideo'}%这里可以看到我的PC上安装了两个适配器
  6.         MATLABVersion: '7.6 (R2008a)'
  7.           ToolboxName: 'Image Acquisition Toolbox'
  8.        ToolboxVersion: '3.1 (R2008a)'
复制代码
有输入参数的时候,返回一个结构体,包含了指定的适配器的数据信息
  1. >> win_info=imaqhwinfo('winvideo')%我们看看第二适配器的具体参数
  2.  
  3. win_info =
  4.  
  5.        AdaptorDllName: [1x81 char]%适配器dll文件绝对路径
  6.     AdaptorDllVersion: '3.1 (R2008a)'%适配器dll文件版本
  7.           AdaptorName: 'winvideo'%适配器名称
  8.             DeviceIDs: {[1]}%设备ID号,这个我们经常需要用到
  9.            DeviceInfo: [1x1 struct]%设备信息,这里主要是图像获取设备的一些参数,比较重要
  10.  
  11. %====================下面我们了解下,这个图像获取设备到底有哪些的详细信息吧====================
  12.  
  13. >> win_info.DeviceIDs
  14.  
  15. ans =
  16.  
  17.     [1]
  18.  
  19. >> dev_win_info=win_info.DeviceInfo
  20.  
  21. dev_win_info =
  22.  
  23.           DefaultFormat: 'RGB24_320x240'%获取图片的默认格式
  24.     DeviceFileSupported: 0
  25.              DeviceName: 'USB PC CAMERA P227'%设备名称
  26.                DeviceID: 1%设备号
  27.       ObjectConstructor: 'videoinput('winvideo', 1)'%对象构建方式,这个绝大部分都是一样的
  28.        SupportedFormats: {1x12 cell}%获取的图像支持格式,一般都有好多种,上面的DefaultFormat只是默认格式而已
  29.  
  30. %==================================看看图像获取设备支持的图像格式==================================
  31.  
  32. >> dev_win_info.SupportedFormats%可以看到我的PC上的摄像头支持下面12中图片格式
  33.  
  34. ans =
  35.  
  36.   Columns 1 through 5
  37.  
  38.     'I420_160x120'    'I420_176x144'    'I420_320x240'    'I420_352x288'    'I420_640x480'
  39.  
  40.   Columns 6 through 9
  41.  
  42.     'RGB24_1280x960'    'RGB24_160x120'    'RGB24_176x144'    'RGB24_320x240'
  43.  
  44.   Columns 10 through 12
  45.  
  46.     'RGB24_352x288'    'RGB24_640x480'    'RGB24_800x600'

视频预览、采集和保存

(1)创建视频输入对象
obj = videoinput(adaptorname,deviceID,format)
adaptorname:适配器名称,首次可以使用不带参数的imaqhwinfo函数获取
deviceID:设备ID号,首次可以通过imaqhwinfo函数获取
format:视频采集格式,可以通过DeviceInfo的SupportedFormats获取,不填写则使用默认格式
  1. >> obj = videoinput('winvideo',1,'RGB24_320x240')%这里我们使用默认的视频采集格式
  2.  
  3. Summary of Video Input Object Using 'USB PC CAMERA P227'.
  4.  
  5.    Acquisition Source(s):  input1 is available.
  6.  
  7.   Acquisition Parameters:  'input1' is the current selected source.
  8.                            10 frames per trigger using the selected source.
  9.                            'RGB24_320x240' video data to be logged upon START.
  10.                            Grabbing first of every 1 frame(s).
  11.                            Log data to 'memory' on trigger.
  12.  
  13.       Trigger Parameters:  1 'immediate' trigger(s) on START.
  14.  
  15.                   Status:  Waiting for START.
  16.                            0 frames acquired since starting.
  17.                            0 frames available for GETDATA.
(2)打开视频预览窗口
himage=preview(obj,himage)
obj:视频采集对象
himage:视频预览窗口对应的句柄,也就是说在指定的句柄对象中预览视频,该参数可以空缺
至于预览窗口的关闭和停止可以使用colsepreview和stoppreview函数
  1. vidRes = get(obj, 'VideoResolution');
  2. nBands = get(obj, 'NumberOfBands');
  3. figure()%指定预览窗体显示的figure
  4. axes()%指定预览窗口显示的坐标系
  5. hImage = image( zeros(vidRes(2), vidRes(1), nBands) );
  6. preview(obj, hImage);
(3)图像捕捉、显示和保存
  1. %frame是H×W×B的矩阵。H图像高度,由ROIPosition指定;w图像宽度,由ROIPosition指定;B索线个数,由NumberOfBands指定
  2. frame = getsnapshot(obj);%获取视频的一帧
  3. imshow(frame);%显示获取那一帧
  4. imwrite(frame,'snap.jpg','jpg');

Comments

Popular posts from this blog

从理工科博士到金融界Quantitative Analyst

大家好,5月初UM-CSSA职业发展组邀请今年刚毕业的理论物理博士赵智沉师兄,为密大学子带来关于“从理工科博士到金融界Quantitative Analyst”的分享。现将整理好的现场录音文稿发布,供大家阅读。在此,UM-CSSA职业发展组由衷感谢赵师兄的热心支持与精彩分享,欢迎大家关注UM-CSSA及职业发展组未来的活动! 关于主人公: 他是密大高能理论物理博士,曾荣获三项省级物理数学奥赛一等奖,进入北大元培计划实验班深造 却转战于金融界Quantitative Analyst领域,斩获Credit Suisse工作offer,以及Credit Suisse, Barclays Capital和JPMorgan等3个实习offer 他是密大“甄士隐”戏剧工作坊灵魂人物、思想学术沙龙专家、国标舞&桌游发烧友 也被密大中以理工科背景转行金融行业的同学们称为自己的"祖师爷" 他有一个智慧得深沉的名字:赵智沉 赵智沉:从理工科博士到金融界Quantitative Analyst 背景经历 大家好,我的主要工作是为投行的交易做一些模型,然后用编程的方式把这些模型实现出来,给他们交易员,所以有一点像后勤保障这样的工作。我的经历可能对Ph.D更有用一些,因为我的同行都是Ph.D.,都是博士生毕业。本科生一般没有,硕士生也非常少。所以我一会儿讲下我的经历,你们就知道了。 我先自我介绍一下吧,我叫赵智沉,我现在物理系,第五年刚毕业。我是上海人,本科在北京大学元培计划实验班读的,中学是在上海中学。我属于比较典型的走物理竞赛道路的经历,从初中开始,就参加各种物理竞赛补习班,参加竞赛,然后考中学的理科班,也是搞竞赛的班级。唉,要不大家自我介绍一下先?(听众做自我介绍)看来还是Ph.D.比较多,大部分都是研究生。 这边多少人和我一样搞竞赛的?其实竞赛和高考没有太大区别,就是我们走的是不一样的途径。中学参加理科班,理科班也是参加各种竞赛。通过竞赛得奖,保送大学。在北大也是学的物理。我在北大元培实验班,当时在中国是一个比较新鲜的东西,跟美国本科很像。第一年是不选专业的,进去之后就分文理科,什么都可以修,到第二年才选专业。140分的学分可能只需要40分的专业课,其他100分可以自己修想修的课就可以毕业。所以当时这在中国算是一...

死准死准的12星座的收服大法

射手女 你爱上了一个射手?请做好心理准备,我想你保证射手不是12星座里最难泡的,但是是最最特殊的。 射手关键字---自由 我知道你知道这个。但是我要说的是你未必真的能够做到时时刻刻铭记这一点。射手的自由要求体现在方方面面。你若践踏,必然走向毁灭。这个是你时刻需要谨记的东西。 追求策略 请确保你自己足够有趣,相信我这比你是个美男更来的关键,和其他星座的女生一样,射手也常常把追求美男挂在嘴上,但实际上如果你不够有趣,那么你依然会被排斥掉。这一点,甚至射手自己都不会注意到。 射手会畏惧逐渐靠近的关系,畏惧自己即将陷入爱情的现实。她们通常会开始排斥,这个与射手的年龄关系很大,越是年轻的射手在这点上表现的越明显。她很可能会告诉你我不想恋爱,或者你老跟着我干吗,之类瞬间刺痛你的话。但是,不要害怕,那是因为她的畏惧。其实过了很久,你才会明白她害怕的是自己投入后伤痕累累。 面对这个局面,你可能不知所措。我的建议是你暂且离开,不要走得太远,更不要找备胎之类,那样的策略会直接让你在与射手的追逐战中被淘汰。不要企图用冷落射手来刺激你追求射手的进展,那绝对不适用射手。如果你对射手来说还没有非常致命吸引力,你冷落她,丝毫不会带来影响,射手会忘记你更快。直到你投降。 所以,保持适当的距离很重要,如果她害怕了,暂且离开。不要着急告白,让她更多感受到的是和你的快乐,而非你的逼迫。 不要挖空心思搞浪漫,射手不吃这一套。射手的爱情一定是从朋友开始的,你企图通过一时的浪漫或者感动来打动她,几乎是不会成功的。你还是多在如何和她做朋友上下下功夫吧。 射手比较热情,但是不会一直这样,你越靠近她的心,你越多机会感受冷漠。这种冷漠才是她的内心真实。你必须要适应这种冷漠,那不代表对你冷漠,那只是射手对待这个世界的保护姿态。她们很容易相信别人,所以比起其他星座有更多朋友。如果你的射手还很漂亮,她的异性朋友会更多,当然不乏追求者。不过放心,射手不会轻易答应任何人的追求。你也完全不需要因为这个紧张。不知道是什么地方流传的射手的花心,但是我告诉你那是不对的。下这种结论的人,完全没有理解射手的心。 射手更多的是,对于社交保有兴趣,对于朋友保持热情。或许这给人了错觉。但是,面对爱情,射手是悲观的,她们不太相信现实中的爱情,所以倾向于跟每个人保持理性的距离。所以,她们可能会遇到很多次鲁莽的追逐和表白,但是那些都很难成功。因为这些...

I came here, but is it true?

After a tough time of journey, I finally got here. Use media platforms like facebook, twitter, and youtube, to share ideas and communicate with any people without restriction. Naturally, Internet should be freely accessable, but thus freedom is so frail, especailly when political forces are driven by those with no conscience. Thanks to the positive side of coin of the technology, we are not left without counterplots. SSH, Ipv6, VPN, and Proxy, etc., leaded individuals like me, breaking the cage that suppose to encage my mind and enslave my physical fresh, and leaded individuals like me, showing the middle finger to the regime, who costs billions of taxes to deprive those taxes payers' right. Though the coin might be turned back occasionally, the trendy of collapse of the turner themselves, is reinforced at the same time. Sorrowful?ly enough however, such cages exist no only across the Internet, but not every cages can be breaken with tech. lever. As a result, most of people were le...