[转]使用MATLAB进行USB摄像头的编程

http://blog.csdn.net/linxue968/article/details/6047376

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

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

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‘%s适配器名称

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(fame,‘snap.jpg‘,‘jpg‘);

实验步骤

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、 输入如下代码

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 = input1Tag =

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);

时间: 2024-11-05 11:26:38

[转]使用MATLAB进行USB摄像头的编程的相关文章

【5.1送礼】国内第一部Matlab和C#.Net混合编程入门级视频教程【完全免费】

上一次写博客很久了,一直在忙彩票分析系统架构的事情,写博客真是件费神的事情,非常花时间.今天抽空发布这篇博客,是为了开源一部自己录制的视频教程-Matlab和C#.Net混合编程视频教程[入门级].下面说说这部视频教程的来由和一些事情,想获取的仔细看看,别忘了点[推荐]哦! 一.为啥要开源 1.1 视频的来源 这部视频教程是在2012年年底闲时比较多,当初也是很多朋友,网友提出这个Matlab.Net混合编程入门比较难,没有资料,所有就特意录制了一部比较简单的视频教程.并有条件的对广大网友免费开

ubuntu12.04+fuerte 下跑通lsd-slam——使用usb摄像头

上一篇介绍了如何使用数据集跑lsd-slam,这篇介绍如何用一个普通的usb摄像头跑lsd-slam,默认ubuntu12.04,fuerte已经安装好,workspace也已设置,如果没有,请参考上一篇数据集下跑lsd-slam的博文. 我使用的摄像头是罗技c310 usb摄像头,其他的usb摄像头应该也没什么问题. 1.测试摄像头好坏.安装cheese,执行 $ sudo apt-get install cheese 运行cheese,执行 $ cheese 确认摄像头是否能在ubuntu下

《通过Web远程浏览并控制Tiny6410上的usb摄像头》---实战篇

时间不早了,简单介绍直奔主题哈 一.介绍 软件:Mjpeg‐stream 是一个开源软件,用于把mjpeg格式的文件变成流媒体输出. 平台:Tiny6410 硬件:普通usb摄像头 二.编译.安装方法不多讲,网上写的比较好的博文很多 三.pc上测试效果(只能用火狐,ie.360浏览器均不正常显示) 1>地址栏输入:http://192.168.1.107:8080/?action=stream     (视频) 2>或者地址栏输入:http://192.168.1.107:8080/?acti

ok6410驱动usb摄像头

为了做图像处理,需要用摄像头,搜到实验室只有一个摄像头,是国安的,具体参数在终端中看到: 本来担心这个摄像头在6410中能不能用,结果插上后得到如上显示,知道该摄像头是uvc的,可用,参考文章链接: http://www.cnblogs.com/emouse/archive/2013/03/03/2941938.html 在网上到处都可以下到ok6410摄像头测试程序,下载链接:http://download.csdn.net/download/harryching/5108478 于是下载后按

Bananapro SimpleCV & usb摄像头教程

最近折腾图像处理,看重了simpleCV与python的简便,想要在Bnanapro上安装SimpleCV,于是折腾了一天才安装好,下面和大家分享一下! 提前说明!请不要完全按照网上其他树莓派安装SimpleCV的教程安装,有一些低层库Bananapro和树莓派相差很大! 1.编译安装opencv 这个早有人在论坛里分享过,我就贴个链接 http://forum.lemaker.org/cn/forum.php?mod=viewthread&tid=8894&extra=page%3D2

OpenCV 入门级之USB摄像头采集[转]

前面两篇博文呢,介绍了 OpenCV 的环境搭配以及最基本的几个函数的使用, 而这一篇博文则还是延续以 Demo 讲述 OpenCV API 的方式, 因为有些 API 是用得很多的,所以必须要熟练,而至于其他的一些比较罕见的 API , 则可以通过在 OpenCV 官网上下载必要的 API 文档来熟悉就 OK 了, 对于在前面呢,基本上介绍了 IplImage 以及 CvCapture 的使用,下面的 Demo 呢, 其实和前面差不多,只不过,我是通过摄像设备捕捉到帧后进行的处理, 其实这个并

Linux USB摄像头驱动【转】

本文转载自:http://www.itdadao.com/articles/c15a509940p0.html 在 cortex-a8 中,可接入摄像头的接口通常可以分为两种, CAMERA 接口和 USB 接口的摄像头.这一章主要是介绍 USB 摄像头的设备驱动程序.在我们印象中,驱动程序都是一个萝卜一个坑,拿到一个硬件就需要去安装它相对应的驱动程序.有时候稍有不对还会导致电脑崩溃,是不是让人很郁闷?这一章我们讲 USB 摄像头设备驱动,那么是不是支持所有的 USB 摄像头驱动呢?带着这个疑问

海思hi3716c机顶盒接usb摄像头和usb无线耳机时,无线耳机有时没有声音

两个USB设备各自是: A:USB摄像头带录音功能,但不带放音功能. B:USB无线耳机是使用USB转2.4G的无线耳机. 详细现象: 1, A,B两者同一时候插上机顶盒,并开机进入android,此时去播放音乐或电影,声音是从HDMI出来的,并不是从无线耳机出来. 此时又一次插拔一下2.4G无线耳机,声音就会从耳机中出来. 2, 机顶盒上电.进入android系统,然后播放音乐或电影,此时声音从HDMI中出来.这个时候接上USB摄像头,声音还是从HDMI出来. 再接上无线耳机.这时候声音却还是

ROS安装USB摄像头

本文为原创,转载请注明来自CSDN Jasmine_shine的专栏 网址:http://blog.csdn.net/jasmine_shine/article/details/46715099 1.  明确USB摄像头的型号. 在终端键入$lsusb ,会显示所有的摄像头的型号编码,具体参考: http://www.ideasonboard.org/uvc/ 根据上面给出的ID我找出了蓝色妖姬t3200这款摄像头的ID号是18ec:3299      USB 2.0 PCCamera (mod