读取usb摄像头的程序简介
Linux 下 USB摄像头驱动的实现

Linux 下USB摄像头驱动的实现摘要:介绍了Linux体系下USB摄像头驱动的体系结构。
首先介绍了作为Linux视频部分标准的Video4Linux,这是USB摄像头开发的关键部分;然后描述了Linux体系下USB设备驱动的层次结构以及涉及到的几个重要数据结构;最后给出了中星微的ZC0301P摄像头驱动的具体实现。
关键词:USB摄像头;Linux;video4Linux;驱动程序0引言USB摄像头由于价格低廉、使用方便、通用性强,被广泛应用于个人电脑、视频监控、图像采集等设备中。
目前,摄像头驱动程序大部分都是基于Windows平台下,而嵌入式系统大都采用Linux 系统,因此需要开发在嵌入式Linux平台下的基于Linux驱动框架的摄像头驱动程序。
摄像头主要由主控芯片和传感芯片两部分组成,景物通过镜头生成的光学图像投射到图像传感器上,然后转为电信号,经过A/D转换后变为数字图像信号,然后送到DSP中处理。
主控芯片负责图像采集、压缩以及和主机的通信。
本文中摄像头芯片采用的是中星微公司的ZC0301P芯片,这是目前应用比较广泛的一款产品。
1Linux下的视频标准Video4Linux目前的Linux内核已经添加了对音视频设备的支持,这部分的标准是Video4Linux(简称V4L)。
V4L是一些视频系统、视频软件、音频软件的基础,目前主要应用在图像采集、视频采集等多媒体设备中,比如可视电话、视频监控、Webcam,是嵌入式Linux开发人员经常使用的系统调用接口。
Linux内核通过V4L为用户空间提供了标准的操作接口,各种音频和视频设备相应的驱动程序加载进内核后,V4L就可以通过内核提供的API像对普通文件一样来操作视频和音频设备,从这里可以看出V4L大体分为两层,上层为系统提供的API,底层为音视频设备在内核中的驱动。
这个标准提供了一套标准接口,应用程序、内核、驱动以这个接口进行互相访问。
同时,该标准对USB摄像头也提供非常好的支持。
mini2440usb摄像头程序详解

mini2440usb摄像头程序详解终于把mini2440 usb摄像头程序的搞懂了,附上程序及我的一些注释:程序名:usbcamera.cppMakefile:usbcamera: usbcamera.cpparm-linux-g++ usbcamera.cpp -Wall -O2 -o usbcameraarm-linux-strip -s usbcameraclean:rm usbcamera可执行文件:usbcamera使用方法:将可执行文件下载到开发板,执行,会在当前文件夹生成一张图片。
#include <stdio.h>#include<stdlib.h>#include <string.h>#include<assert.h>#include <getopt.h> #include<fcntl.h> #include <unistd.h>#include<errno.h>#include <malloc.h>#include<sys/stat.h>#include <sys/types.h>#include<sys/time.h>#include <sys/mman.h>#include<sys/ioctl.h>#include <asm/types.h> #include<linux/videodev2.h>#define CLEAR(x) memset(&(x), 0, sizeof (x))struct buffer { void * start; size_t length;};static char * dev_name = "/dev/video0";//摄像头设备名static int fd = -1;struct buffer * buffers = NULL;static unsigned int n_buffers = 0;FILE *file_fd;static unsigned long file_length;static unsigned char*file_name;////////////////////////////////////////////////////////获取一帧数据//////////////////////////////////////////////////////static int read_frame (void){ struct v4l2_buffer buf; unsigned int i; CLEAR (buf); buf.type =V4L2_BUF_TYPE_VIDEO_CAPTURE; buf.memory = V4L2_MEMORY_MMAP;/*8.出队列以取得已采集数据的帧缓冲,取得原始采集数据。
实验十五 USB 摄像头驱动和应用实验

2.3 视频捕获函数与其捕获线程
int CCameraCode::StartStreaming (HDC hdc, RECT *prect, WORD wFormat, WORD wFrame, DWORD dwInterval) { PTHREADSTRUCT pThd = (PTHREADSTRUCT)LocalAlloc (LPTR, sizeof (THREADSTRUCT)); if (!pThd) return ERROR_NOT_ENOUGH_MEMORY; // Load parameter passing struct pThd->wFormat = wFormat; pThd->wFrame = wFrame; pThd->rect = *prect; pThd->dwInterval = dwInterval; pThd->hdc = hdc; pThd->pCamercode =this;
2
USB 设备的识别过程,包括 USB 总线枚举过程、设备类配置过程等。而 USB 的通信过 程,则按层次依次分为信号层、协议层和数据传输层进行。下面分别对上述过程进行描述。 数据传输层 接 协议层 USB 主机 信号层 USB 总线接口 端 点 口
逻辑通信
物理通信
图 2 USB 通信的逻辑结构
a) USB 设备的识别过程: 总线枚举过程: 当一个新的 USB 设备接入集线器(HUB)的某个端口上,集线器就会通过“状态改变管 道”向 USB 主机(USB Host)报告新的设备的接入。主机询问集线器确认新设备的接入后, 等待一段时间后,向端口发出复位命令并使能该端口。 在端口复位完毕后,该端口就有效了,此时 USB 设备出于默认状态,地址为 0。接着主 机给设备分别一个唯一的地址,设备进入有地址状态。 主机从设备中读取所有配置描述符,并且根据读取的配置描述符为设备指定一个配置。 这样设备就可以得到所需要的电量和其他资源,设备已经准备就绪。 设备类配置: 总线枚举完毕后,从设备的角度讲,它已经可以正常工作了,但是主机尚未为该设备的 不同接口分配具体的客户端驱动程序。 因此此时主机端协议软件找到设备中每个接口所需要 的驱动程序,然后驱动程序从接口的选择设置中选出最合适的,为接口中端点创建管道。 如此完成所有接口的配置,设备的配置过程就彻底完成了。USB 设备就像非 USB 设备一 样传输数据了。 USB 通信原理 USB 的通信就是指 USB 设备与 USB 主机之间的通信。物理上,总线上的设备通过一条物 理连线和主机通信,所有的设备共享这个物理链路。逻辑上,主机给每个设备提供了一条逻 辑的连接,每个设备都有这样一条点对点的连接。 为了细化 USB 的通信机制,协议开发者采用了分层的概念。USB 通信逻辑上分成三层: 信号层、协议层和数据传输层。 信号层用来传输位信息流的信息,在这里传输的数据称为包(Packet) ;协议层用来实 现包字节流的信息,它们在信号层被编码成 NRZI 位信息传送出去,这里的包信息流称为事 务处理(Transaction) ;数据传输层用来实现在功能接口间传输有一定意义的信息, 这些信 息在协议层被打包为包格式,这里的信息流称为传输(Transfer) 。下面分析各个层次进行 数据传输I CCameraCode::ReadFrameThread (PVOID pArg) { int rc = 0; BOOL f; DWORD dwBytes; THREADSTRUCT Thd; FORMATPROPS fmtData; int nFrameCnt = 0; DWORD dwTick = 0; DWORD dwErr = 0; if (!pArg) return -1; // Copy over params Thd = *(PTHREADSTRUCT)pArg; CCameraCode *pCameracode=(CCameraCode*)Thd.pCamercode; LocalFree (pArg); rc = pCameracode->GetFormatInformation (Thd.wFormat, Thd.wFrame, &fmtData); if (rc) return rc; // Initialize the conversion library rc =pCameracode->pMjpe2bmp-> InitDisplayFrame (NULL); RECT rect; if ((Thd.rect.right == 0) && (Thd.rect.bottom == 0)) SetRect (&rect, Thd.rect.left, Thd.rect.top, Thd.rect.left + fmtData.dwWidth, Thd.rect.top + fmtData.dwHeight); else rect = Thd.rect; // Parameters needed to start a stream STARTVIDSTRUCT svStruct; dwBytes = 0; svStruct.cbSize = sizeof (STARTVIDSTRUCT); svStruct.wFormatIndex = Thd.wFormat; svStruct.wFrameIndex = Thd.wFrame; svStruct.dwInterval = Thd.dwInterval; svStruct.dwNumBuffs = NUMBUFFS; svStruct.dwPreBuffSize = PREBUFFSIZE; svStruct.dwPostBuffSize = 0; // Start the video stream f = DeviceIoControl ( pCameracode->hCam, IOCTL_CAMERA_DEVICE_STARTVIDEOSTREAM, (LPVOID)&svStruct, sizeof (STARTVIDSTRUCT), 0, 0, &dwBytes, NULL); if (f) { GETFRAMESTRUCT gfsIn;
linuxusb免驱摄像头模块原理

linuxusb免驱摄像头模块原理
LinuxUSB免驱摄像头模块是一种基于Linux操作系统的摄像头驱动程序,它可以让您的Linux系统识别并使用USB摄像头,而无需安装任何额外的驱动程序。
该模块基于Linux Kernel V4L2框架,它可以通过内核接口访问USB 摄像头设备,并将摄像头的数据存储在内存中。
由于Linux操作系统本身就具有广泛的硬件兼容性,所以这个模块可以识别大多数市面上的USB摄像头。
LinuxUSB免驱摄像头模块的原理是通过USB总线协议与USB摄像头进行通信,获取摄像头的数据,并将其转换为视频流。
这些视频流可以用于各种应用程序,比如视频聊天、监控等。
该模块支持多个摄像头同时工作,可以通过设备文件在用户空间程序中调用。
另外,由于它是基于Linux Kernel V4L2框架,所以您可以轻松地扩展和定制它,以满足特定的需求。
总之,LinuxUSB免驱摄像头模块为Linux系统提供了一个简单而强大的解决方案,使它可以识别、控制和使用各种USB摄像头,从而扩展了Linux在视频处理方面的应用领域。
WindowsCE下USB摄像头驱动开发以OV511为例附带全部源代码以及讲解

这部分讲解如何在Windows 下实现 一样的功能。
Windows 的控制传输
查看MSDN,IssueControlTransfer和 IssueVendorTransfer是用来进行控制传输的,但两个函数 有什么区别呢? 看MSDN,IssueControlTransfer的第一个参数是 hPipe,就是说,在使用IssueControlTransfer之前,必须 用OpenPipe打开管道。 OpenPipe函数需要端点描述作为参数。但是,端点0是 没有这个描述可以用的(MSDN: However, endpoint zero (0) never has a USB_ENDPOINT structure)。 我没测试自己指定描述是否可以,但是, IssueVendorTransfer提供了更为方便的途径。这个函数默 认从端点0进行控制传输。 如果是其他端点的控制传输,是要用 IssueControlTransfer的。
Windows 下 流接口USB驱动程序加载的流程
6.接着CAM_Init函数被调用,参数就是ActiveDevice函数的 参数1,然后依据这个参数,在注册表中找到USB驱动程序的上下 文,并返回,这样对该流接口驱动的操作,就可以找到USB驱动 的上下文,并且交换数据。 以上这些工作完成之后,USB设备的信息被保存,并且USB 驱动程序上下文也被流接口驱动所记载。流接口USB驱动的加载 完成。我们就看见那个输入驱动程序名称的对话框消失了。如果前 面6个步骤中任何一步不成功,将不会使用这个驱动程序,会反复 弹出这个对话框,提示输入驱动程序名称,直到这些过程全部正确 完成。
HKEY_LOCAL_MACHINE\Drivers\Active中的项目。 注意:USB驱动程序不通过注册表API来操作注册表,而是通过 USBD提供的函数。
usb摄像头方案

USB摄像头方案1. 引言USB摄像头是一种广泛应用于计算机和移动设备的外设,可以进行实时拍照和视频录制功能。
本文档将介绍USB摄像头的硬件和软件方案,以及其应用场景和使用方法。
2. 硬件方案USB摄像头的硬件方案需要包括摄像头模组、USB接口、图像传感器、镜头等组成。
以下是一种常见的硬件方案:•摄像头模组:摄像头模组是核心部件,负责采集图像并转化为电信号。
常见的摄像头模组包括CMOS和CCD传感器,可以根据不同应用场景选择合适的模组。
•USB接口:USB接口是连接摄像头和计算机的通信接口,常见的USB接口包括USB 2.0和USB 3.0。
USB 3.0接口具有更高的传输速度和更稳定的数据传输,适用于高清视频录制。
•图像传感器:图像传感器是摄像头的核心部件,负责将光信号转化为电信号。
常见的图像传感器包括CMOS和CCD传感器,两者在感光效果和成本方面有所差异。
•镜头:镜头用于调整光线和焦距,影响图像的清晰度和视角。
根据不同应用场景可以选择不同类型的镜头。
3. 软件方案USB摄像头的软件方案包括驱动程序和应用程序。
•驱动程序:USB摄像头需要安装相应的驱动程序才能在计算机上正常工作。
驱动程序负责与操作系统进行通信,控制摄像头的功能,以及提供图像和视频数据的接口。
•应用程序:USB摄像头的应用程序通常提供实时预览、拍照、录制视频等功能。
应用程序可以使用操作系统提供的图像处理接口,实现图像增强、滤镜美化等特效。
4. 应用场景USB摄像头在许多应用场景中都有广泛应用,下面是一些常见的应用场景:•视频会议:USB摄像头可以实现高清视频会议,提供实时的视频通信和远程协作功能。
•监控系统:USB摄像头可以连接到计算机或网络视频录像机,用于监控和录制视频。
•在线教育:USB摄像头可以用于远程教学和在线培训,教师可以通过摄像头实时展示教学过程。
•视频直播:USB摄像头可以连接到计算机或移动设备,用于实时直播和视频分享。
usb高清摄像头方案

USB高清摄像头方案简介USB高清摄像头方案是一种基于USB接口的摄像头解决方案,可以通过USB接口连接到计算机或其他设备,提供高清图像和视频捕捉功能。
USB摄像头方案广泛应用于视频会议、在线教育、安防监控、电子游戏等领域。
本文将介绍USB高清摄像头方案的基本原理、硬件配置和软件开发要点,以帮助读者了解和使用USB高清摄像头方案。
基本原理USB高清摄像头方案的基本原理是通过摄像头模块采集图像数据,然后将数据传输到计算机或其他设备。
以下是USB高清摄像头方案的基本工作流程:1.摄像头采集图像数据:摄像头模块使用光学元件和图像传感器来采集环境中的图像数据。
摄像头模块通常包括镜头、光圈、快门等组件,用于实现对图像的调节和控制。
2.图像压缩和编码:采集到的图像数据通常比较庞大,需要进行压缩和编码以减小数据量。
常用的图像压缩和编码算法包括JPEG、H.264等。
B传输:压缩和编码后的图像数据通过USB接口传输到计算机或其他设备。
USB接口提供了高速数据传输能力,可以满足高清摄像头方案的数据传输需求。
4.数据解码和处理:计算机或其他设备接收到图像数据后,需要进行解码和处理。
解码将压缩和编码后的数据转换回原始图像数据,然后可以进行后续的图像处理和应用开发。
硬件配置USB高清摄像头方案的硬件配置包括摄像头模块、驱动电路和USB接口电路。
摄像头模块摄像头模块是实现图像采集功能的关键组件。
摄像头模块的选型应根据实际需求考虑分辨率、像素大小、光圈、焦距、帧率等参数。
常用的摄像头模块包括CMOS和CCD摄像头模块,其中CMOS摄像头模块具有低功耗、低成本和高速度的优势,被广泛应用于USB高清摄像头方案中。
驱动电路驱动电路用于控制和驱动摄像头模块。
驱动电路通常包括信号放大电路、滤波电路、时钟电路、电源管理电路等。
驱动电路的设计需要考虑摄像头模块的接口和特性,以确保良好的图像质量和稳定性。
USB接口电路USB接口电路用于将图像数据传输到计算机或其他设备。
USB摄像头工作原理讲解

USB摄像头工作原理讲解USB摄像头是一种利用USB接口进行数据传输的摄像设备,它与电脑或其他设备连接后可以实时捕捉图像或视频,并将数据传输到计算机上进行处理或存储。
下面将从硬件和软件两个方面对USB摄像头的工作原理进行详细讲解。
一、硬件方面2.镜头系统:用于调整摄像头对光的敏感程度和焦距,决定成像质量。
镜头通常由多个透镜组成,可以通过调节距离和焦距来实现对焦调节。
3.图像处理芯片:负责对传感器捕捉到的数据进行处理和编码,然后传输给计算机。
处理芯片可以进行图像增强、降噪、图像压缩等功能,也可以支持自动对焦、自动曝光等功能。
B接口:USB摄像头通过USB接口与计算机连接。
USB接口是一种通用的接口标准,可以提供较高的传输速度和稳定性。
在连接时,USB摄像头会向计算机发送设备ID和USB视频类(UVC)标准请求,以与计算机建立通信。
二、软件方面1.驱动程序:USB摄像头连接到计算机后,需要安装相应的驱动程序。
驱动程序是用来与操作系统进行通信,使计算机可以识别摄像头并传输、处理图像数据。
目前大多数操作系统都支持USB摄像头驱动,所以插上摄像头后通常会自动安装对应的驱动程序。
2.视频采集:摄像头通过驱动程序向操作系统申请视频流数据的采集,操作系统通过USB接口接收并缓存数据。
采集到的数据以图像帧格式存放,一般包括图像的宽度、高度、颜色空间等信息。
3.图像处理和编码:接收到视频流数据后,操作系统会将数据传输给摄像头的处理芯片进行图像处理。
处理芯片可以对图像进行增强、降噪等处理,并将处理后的图像编码为JPEG、H.264等格式进行传输和存储。
4.图像传输和显示:处理后的图像数据通过USB接口传输给计算机,计算机接收到数据后可根据需要进行存储或传输至应用软件进行显示。
通常情况下,计算机上会安装相应的视频通信软件或应用程序,可以通过这些软件进行实时视频通话、拍照、录制等操作。
总结起来,USB摄像头通过图像传感器捕捉光信号,经过镜头系统调整焦距和敏感度,然后通过处理芯片进行图像处理和编码,最后数据通过USB接口传输给计算机进行处理和显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用MATLAB进行USB摄像头的编程编程 2009-05-19 08:52:07 阅读475 评论0 字号:大中小订阅在CSDN上看了一篇“如何使用MATLAB进行USB2.0摄像头的编程”的博文,感觉不错,现转摘如下:整个过程我们需要做如下几件事情:1、查询USB2.0Camera 的具体参数(imaqhwinfo)2、创建视频输入对象(videoinput)3、图像预览和显示(preview、stoppreview、closepreview和image)4、获取视频图像(getsnapshot)5、图像获取设备的获取和设置(get和set)6、关闭视频对象(delete)在正式讲解之前,我想说明下几个个在图像获取工具箱中的术语:图像获取设备:比如摄像头、扫描仪图像获取适配器:主要的目的是通过驱动在Matlab和图像获取设备之间传递信息ROI:region-of-interest 感兴趣区域在说说几个常用的函数,我们这里只是说明它的作用,具体如何使用参考帮助系统getselectedsourceimaqfindisvalidpeekdatagetdataimaqmontage给我们一个摄像头我们必须知道他的相关参数,才可能进行我们的编程下。
当然我们可以查询商家手册,但是那个累不累人呀。
Matlab的图像获取工具箱为我提供了imaqhwinfo(),来获取PC上以安装的图像获取硬件信息没有输入参数时,返回一个结构体,它包含了系统中存在的适配器和Matlab相关的版本信息(第一次我们一般使用这个)代码:>> info=imaqhwinfoinfo =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.DeviceIDsans =[1]>> dev_win_info=win_info.DeviceInfodev_win_info =DefaultFormat: 'RGB24_320x240'%获取图片的默认格式DeviceFileSupported: 0DeviceName: '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_3 52x288' 'I420_640x480'Columns 6 through 9'RGB24_1280x960' 'RGB24_160x120' 'RGB24_176x144' 'RG B24_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()%指定预览窗体显示的figureaxes()%指定预览窗口显示的坐标系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: 0DeviceName: 'USB 视频设备'DeviceID: 1ObjectConstructor: 'videoinput('winvideo', 1)' SupportedFormats: {1x5 cell}输入device1 = winvideoinfo.DeviceInfo(1)返回信息device1 =DefaultFormat: 'YUY2_160x120' DeviceFileSupported: 0DeviceName: 'USB 视频设备'DeviceID: 1ObjectConstructor: '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_352x2 88'Column 5'YUY2_640x480'2、最简单采集实验,输入如下代码,可以得到预览下的默认格式的摄像头捕捉窗口obj=videoinput('winvideo',1);preview(obj);3、输入如下代码vidobj = videoinput('winvideo',1,'YUY2_640x480');sources = vidobj.Source;whos sourcesset(vidobj,'SelectedSourceName','input1');sourcesselectedsrc = getselectedsource(vidobj);get(selectedsrc);delete(vidobj);clear vidobj;返回信息Name Size Bytes Classsources 1x1 726 videosource object Grand total is 30 elements using 726 bytesDisplay Summary for Video Source Object:Index: SourceName: Selected:1 'input1' 'on'General Settings:Parent = [1x1 videoinput]Selected = onSourceName = input1Tag =Type = videosourceDevice Specific Properties:BacklightCompensation = onBrightness = -16Contrast = 120FrameRate = 30.0000Gamma = 60Hue = 0Saturation = 40Sharpness = 34、输入如下代码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为0imshow(a); %显示图像drawnow; % 实时更新图像end;delete(vid);。