转自:http://www.cnblogs.com/emouse/archive/2013/03/03/2941938.html

本文涉及软硬件平台:

开发板:飞凌OK6410

系统:Ubuntu 12.04+飞凌官方3.0.1


嵌入式Linux还处在入门阶段,主要方向是嵌入式下的图像处理,最近一直在学习OpenCV和Qt相关知识,打算以此入手。

本文记录在嵌入式平台摄像头的选择和测试过程中的一点经历,没有太多的技术内容,对于同样入门还在盲目摸索的同学可能有一点帮助。

之前没有任何图像方面开发的经验,对于Windows平台来说,摄像头也就是插上去装个驱动,剩下的用起来就差不多了,具体的差异很难深入去了解,在学习嵌入式linux的时候,在没有什么基础的情况下,一开始摄像头的选择和测试就要绕一个大圈子。

摄像头选择与内核配置

打算用手中的6410板子先做点图像方面的小程序,自然在网上搜搜关于6410上面用的摄像头,搜索发现绝大多数是两种情况,一种是使用中星微ZC301P芯片的usb摄像头,还有就是官方适配的模块OV9650。记得实验室有很多摄像头,于是在实验室翻箱倒柜找了找,普通电脑用USB摄像头找到3个,一个就是中星微ZC301芯片的了,图片如下,和淘宝上卖的外观确实是一样的,另外两个杂牌,其中一个经过测试用的也是中星微的芯片,另外一个就是本文要说的UVC格式的摄像头。

ZC301摄像头和UVC输出的摄像头在板子上的Linux 3.0.1内核中已经自带支持,插上就能够识别,网上说2.6.26都能支持,不过需要在编译内核的时候进行针对性配置,在内核的配置中可以按照如下路径进行查找配置:

<*> Multimedia support ---> <*> Video For Linux [*] Enable Video For Linux API 1 (DEPRECATED) [*] Video capture adapters ---> [*] V4L USB devices ---> <*> USB Video Class (UVC) [*] UVC input events device support [*] GSPCA based webcams --->

到这里就能看到UVC和GSPCA两者的驱动支持了,UVC的简介如下:

UVC是Microsoft与另外几家设备厂商联合推出的为USB视频捕获设备定义的协议标准,目前已成为USB org标准之一。

如今的主流操作系统(如Windows XP SP2 and later, Linux 2.4.6 and later, MacOS 10.5 and later)都已提供UVC设备驱动,因此符合UVC规格的硬件设备在不需要安装任何的驱动程序下即可在主机中正常使用。使用UVC技术的包括摄像头、数码相机、类比影像转换器、电视棒及静态影像相机等设备。

GSPCA同样是一种标准,早期的很多摄像头用的就是这一标准,ZC301就属于这一类型,在 GSPCA based webcams下最后能够找到ZC3XX的驱动支持。这个内核中默认UVC和GSPCA都是选上的,对于其他版本如果无法支持就需要重新编译内核了。配置界面如下图所示。

摄像头类型的确定

很多品牌摄像头,如罗技的很容易确定芯片型号,和是否支持UVC,但是也有很多摄像头无法确定,经过前期的查找,决定使用UVC的摄像头,关于摄像头类型的确定方法可以通过硬件ID来确定,硬件ID主要分为VID和PID,在Winows中可以在设备管理器中查看,方法如下图:

在这个图中能够看到VID和PID为04F2:B257,这是我笔记本内置摄像头的ID,可以通过这个文档(

摄像头驱动VID+PID大全)来确定芯片类型,3个摄像头中的一个芯片ID为1871:01F0,可以通过这个网页(http://www.ideasonboard.org/uvc/)来查看是否是否支持UVC,如下图所示,可以看到这个摄像头在支持范围内。

ZC301的使用网络上已经有很多的资料了,下面主要记录UVC摄像头的一些信息。

将UVC摄像头插入开发板,输出以下信息,说明内核能够正确识别。

确定ID后,还可以通过以下方式查看,输出如下信息时也表示支持。

简单测试

坑爹的飞凌板子给的资料很多,但是文档极差,很多程序源码没啥说明,自己使用可能需要摸索一阵子了。飞凌官方给了usb摄像头的测试程序,我文档中的文件为testcam.c ,test_usb_camera 源码中还有其他几个程序,经过测试这个我测试是可以的。

另外一个就是UVC的一个测试软件luvcview,在资料光盘中的路径为:Linux-3.0.1\apptest\摄像头测试\USB摄像头\USBCamera- linux+android\linux3.0.1系统下-2012-07-05,通过这个可以查看和测试UVC摄像头。

查看摄像头信息:./luvcview -d /dev/video2 –L 结果如下:

由此可以看出摄像头的一些基本信息,更多的不太了解,起码清楚了输出格式YUV,以及分辨率,接下来通过这些信息来测试。

[root@FORLINX6410]# ./luvcview -d /dev/video2 -f yuv -s 320x240

即可运行。

★emouse 思·睿博客文章★ 原创文章转载请注明:http://emouse.cnblogs.com

嵌入式Linux中摄像头使用简要整理【转】的更多相关文章

  1. 嵌入式linux中使用 DHCP功能描述

    嵌入式linux中使用 DHCP功能描述 busybox中udhcpc的默认script脚本地址为#define DEFAULT_SCRIPT   CONFIG_UDHCPC_DEFAULT_SCRI ...

  2. 更改嵌入式Linux中开机画面----左上角小企鹅图标

    一直想给嵌入式仪表加个开机LOGO,但是没有找到更换的方法.最近在网上收集了一些文章,整理一下一共自己参考.目前也还没有试过这种方法究竟是否可以.但察看Kernel源代码可以知道,Linux-2.6的 ...

  3. 嵌入式linux系统中,lsusb出现unable to initialize libusb: -99 解决办法 【转】

    转自:http://cpbest.blog.163.com/blog/static/41241519201111575726966/ libusb是linux系统中,提供给用户空间访问usb设备的AP ...

  4. 《嵌入式Linux内存使用与性能优化》笔记

    这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影 ...

  5. 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)

    转:http://blog.csdn.net/zyb19831212/article/details/1887930 一.什么是文件系统 (Filesystem): A directory struc ...

  6. 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能

    本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux经常使用命令 Linux启动过程具体解释 熟悉L ...

  7. 4种用于构建嵌入式linux系统的工具_转

    转自:4种用于构建嵌入式linux系统的工具 Linux 被部署到比 Linus Torvalds 在他的宿舍里开发时所预期的更广泛的设备.令人震惊的支持了各种芯片,使得Linux 可以应用于大大小小 ...

  8. 嵌入式Linux的OTA更新,基础知识和实现

    嵌入式Linux的OTA更新,第1部分-基础知识和实现 OTA updates for Embedded Linux,  Fundamentals and implementation 更新的需要 一 ...

  9. 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序

    嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...

随机推荐

  1. [BZOJ1009][HNOI2008]GT考试(KMP+DP)

    [不稳定的传送门 Solution dp[i][j]表示前i个字符当前匹配到不吉利串的第j个,即当前方案的后缀等于不吉利串前缀 然而由于n过大,不能直接转移,用矩阵优化 Code #include & ...

  2. 为 dll (类库) 解决方案添加测试项目

    解决方案中新建项目, 添加引用, "解决方案" -> "项目", 选中即可, 而非直接添加 dll, 这会导致编译出错

  3. 实时查询引擎 - Facebook Presto 介绍与应用

    1. Presto 是什么   Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询.它支 ...

  4. 为什么不要使用 Async Void ?

    原文:为什么不要使用 Async Void ? 问题 在使用 Abp 框架的后台作业时,当后台作业抛出异常,会导致整个程序崩溃.在 Abp 框架的底层执行后台作业的时候,有 try/catch 语句块 ...

  5. 剑指Offer - 九度1508 - 把字符串转换成整数

    剑指Offer - 九度1508 - 把字符串转换成整数2014-02-06 23:46 题目描述: 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 输入: 输入可能包含多个测试样例 ...

  6. 【Decision Tree】林轩田机器学习技法

    首先沿着上节课的AdaBoost-Stump的思路,介绍了Decision Tree的路数: AdaBoost和Decision Tree都是对弱分类器的组合: 1)AdaBoost是分类的时候,让所 ...

  7. Synology DS213J 群晖NAS git server架设方法!

    最近单位购入一台Synology  DS213J用作数据存储. 本人打算将一些项目的源代码也放在上面,他本身的套件中心提供了SVN SERVER和GIT SERVER. 设置SVN SERVER非常简 ...

  8. gulp批量添加版本号

    要实现的理想效果: "/css/style.css" => "/dist/css/style.css?v=1d87bebe""/js/scrip ...

  9. loadrunner检查点设置失败,日志中SaveCount无法被正常统计出来

    在脚本正确的情况下的web_reg_find检查点检查失败,SaveCount无法被正常统计出来. 在检查项Text为中文的情况下, ******(我是被录制下来的代码) web_reg_find(& ...

  10. 什么是 IRC?

    IRC是Internet Relay Chat 的英文缩写,中文一般称为互联网中继聊天.它是由芬兰人Jarkko Oikarinen于1988年首创的一种网络聊天协议.经过十年的发展,目前世界上有超过 ...