嵌入式Linux中摄像头使用简要整理【转】
转自: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都能支持,不过需要在编译内核的时候进行针对性配置,在内核的配置中可以按照如下路径进行查找配置:

到这里就能看到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
即可运行。
嵌入式Linux中摄像头使用简要整理【转】的更多相关文章
- 嵌入式linux中使用 DHCP功能描述
嵌入式linux中使用 DHCP功能描述 busybox中udhcpc的默认script脚本地址为#define DEFAULT_SCRIPT CONFIG_UDHCPC_DEFAULT_SCRI ...
- 更改嵌入式Linux中开机画面----左上角小企鹅图标
一直想给嵌入式仪表加个开机LOGO,但是没有找到更换的方法.最近在网上收集了一些文章,整理一下一共自己参考.目前也还没有试过这种方法究竟是否可以.但察看Kernel源代码可以知道,Linux-2.6的 ...
- 嵌入式linux系统中,lsusb出现unable to initialize libusb: -99 解决办法 【转】
转自:http://cpbest.blog.163.com/blog/static/41241519201111575726966/ libusb是linux系统中,提供给用户空间访问usb设备的AP ...
- 《嵌入式Linux内存使用与性能优化》笔记
这本书有两个关切点:系统内存(用户层)和性能优化. 这本书和Brendan Gregg的<Systems Performance>相比,无论是技术层次还是更高的理论都有较大差距.但是这不影 ...
- 制作嵌入式linux文件系统(ramdisk,cramfs,squashfs)
转:http://blog.csdn.net/zyb19831212/article/details/1887930 一.什么是文件系统 (Filesystem): A directory struc ...
- 【分享】4412开发板-嵌入式Linux开发须要掌握的基础知识和技能
本文转自迅为电子论坛:http://www.topeetboard.com 1.Linux 基础 安装Linux操作系统 Linux文件系统 Linux经常使用命令 Linux启动过程具体解释 熟悉L ...
- 4种用于构建嵌入式linux系统的工具_转
转自:4种用于构建嵌入式linux系统的工具 Linux 被部署到比 Linus Torvalds 在他的宿舍里开发时所预期的更广泛的设备.令人震惊的支持了各种芯片,使得Linux 可以应用于大大小小 ...
- 嵌入式Linux的OTA更新,基础知识和实现
嵌入式Linux的OTA更新,第1部分-基础知识和实现 OTA updates for Embedded Linux, Fundamentals and implementation 更新的需要 一 ...
- 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
嵌入式Linux设备驱动程序:用户空间中的设备驱动程序 Embedded Linux device drivers: Device drivers in user space Interfacing ...
随机推荐
- POJ:2976-Dropping tests(二分平均值)
Dropping tests Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15508 Accepted: 5418 Descr ...
- 笔记-爬虫-XPATH
笔记-爬虫-XPATH 1. xpath XPath是W3C的一个标准.它最主要的目的是为了在XML1.0或XML1.1文档节点树中定位节点所设计.目前有XPath1.0和XPath2.0两 ...
- 常见排序算法题(java版)
常见排序算法题(java版) //插入排序: package org.rut.util.algorithm.support; import org.rut.util.algorithm.Sor ...
- Django笔记 —— 入门简介
最近在学习Django,打算玩玩网页后台方面的东西,因为一直很好奇但却没怎么接触过.Django对我来说是一个全新的内容,思路想来也是全新的,或许并不能写得很明白,所以大家就凑合着看吧- 本篇笔记(其 ...
- 【Kth Smallest Element in a BST 】cpp
题目: Given a binary search tree, write a function kthSmallest to find the kth smallest element in it. ...
- 自动化测试(三)如何用python写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的邮箱不能重复。
写一个函数,这个函数的功能是,传入一个数字,产生N条邮箱,产生的邮箱不能重复.邮箱前面的长度是6-12之间,产生的邮箱必须包含大写字母.小写字母.数字和特殊字符 和上一期一样 代码中间有段比较混沌 有 ...
- 不作伪分享者决定完整分享我自学Python3的全部过程细节
不作伪分享者决定完整分享我自学Python3的全部过程细节 我不要作伪分享者 十六年前我第一次见到了电脑,并深深地爱上了它: 十二年前我第一次连上了网络,并紧紧地被它爱上. 十年前的网络是田园美景 ...
- css深入理解vertical-align
第一讲:vertical-align家族基本认识 了解vertical-align支持的属性值以及组成 属性: 1.inherit 2.线类 baseline,top,middle,bottom 3. ...
- linux备忘录-vi和vim
知识点 vi的三种模式 一般模式 按 ESC 可回到一般模式 相关按键 j 代表 向下按钮 k 代表 向上按钮 h 代表 向左按钮 l 代表 向右按钮 20j 等代表 向下移动20行 Ctrl + f ...
- quagga源码学习--BGP协议中的routemap
路由策略的基础知识 定义 路由策略(Routing Policy)作用于路由,主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径. 目的 路由器在发布. ...