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分可以自己修想修的课就可以毕业。所以当时这在中国算是一...

10年PostDoc待遇

http://emuch.net/html/201010/2461585.html 1.        全美高校博士后待遇相差不大,博士后第一年一般$35000左右。National lab高一些(约$70000/year),我3年前刚毕业来美时, $35000/year (材料学), 我在西南部消费很低的城市,我师妹今年初去纽约大学 $42000/year. 不知道是不是今年博士后工资涨了,但东部消费高很多,特别是房租。 2.        如果可能,来美时最好先了解一下老板的人品,特别是当老板是华人时,我很多朋友抱怨华人老板push很厉害,很累,有时没有周末,几年都不涨工资,还有的抢学生文章。 3.        J1签证前3年不交税,J2家属可以合法打工,H1签证要交税,家属不可以合法打工,如果拖家带口的,税率会很低,基本不怎么交税了【更正:我认识的H1博后是美国毕业的,他要交联邦税。我查了一下,据说从国内过来的H1前3年也免联邦税, 从国内过来的博后J1和H1的税收区别在于H1刚来就要交社会安全税(7.65%, H1一来即被认为是resident),而J1则在第三年才开始交】。所谓benefit主要是指学校给你全家(包括你,配偶和未成年子女)买健康保险。保险费很高,你只需付其中的很少一部分,学校里会付大部分作为benefit。现在主要谈谈J1的收入和福利。 4.        J1第一年和第二年 (身份non-resident alien)只交健康保险费(每年都在涨,2011年单人$590/月, 自己负责$40/月,直接从工资里扣;2个人$1252/月, 自己负责$119/月; 3人及以上家庭,$1626/月, 自己负责$221/月)。除去健康保险费,剩下的都可以拿到手。 5.        值得一提的是牙医保险和健康保险是分开的,保险费主要由个人负责(学校负责很少一部分)。自己负责的费用是$30.98/m (单人), $70.87/m(2个人), $123.12/m (3人及以上)【更正,这个是贵的牙医保险,一般不选这个,还有个比较便宜的牙医保险,只...

徐州一中老师超牛语录

下面的是众多一中学子在毕业后对母校老师经典语句的回忆,以此来纪念那段美好的青葱岁月,也表达一下众校友对母校和老师们的感恩与想念。当中很多话语是用地道的徐州话写的,相信看的懂徐州话的朋友们肯定会开怀一笑。 1、洪成:走下去......心中有个红太阳。 洪成还说:恶劣,我们来捣弄捣弄,我这么捣弄,你懂不??????? 2、数学老师:你作死,明白了没有? 3、物理老师:同学们知道,咱们学校条件不好。(其实我们学校条件好的冒泡!) 4、黄厚朴:“这是一个好题!~”、“一滴管,两滴管~~” 5、魏老师:"蓝蓝的天上白云漂,白云下面马儿跑,马儿来到我跟前,喂他一把草."(老魏特喜欢作打油诗,汗!)全班暴笑。他还有一句著名的口头语:"怪菜!"  6、刘广琴:1,你得改!!!         2,我们彼此之间的信任已经缺失了~~         3,你就是 差!!! 7、洪成:如此恶劣~~~         我说这你懂不~~~         神奇的"1"         FOLLOW我的步伐~         憨算~ 8、勤俭说,今天我们在光天化日之下召开这次毕业典礼! 9、李玲:什么是美?我站在这里就是美。 10、地理老师魏全星,虽然没教过我,但是他的口头禅太经典了:“你真菜!”后来觉得枯燥又进化成了“you are vegetable!”汗~  11、周宁生老师:你就得死(徐州话)...... 12、刘广勤:那同学就要问咯,这是怎么回事呢?  :这是什么颜色的白烟?  :这是一把铁制的钢刀 13、魏全星:真菜 !  :也菜(野菜)!!  :更菜!!! 14、吴启明:俗!一张口就是钱,真俗!  15、陈洪仁:我这么丑都能,何况你们————   16、帕克:事实上,数学是最精准的科...