原文地址为: 嵌入式Linux中摄像头使用简要整理

本文涉及软硬件平台:

开发板:飞凌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都能支持,不过需要在编译内核的时候进行针对性配置,在内核的配置中可以按照如下路径进行查找配置:

Device Drivers ---><*> 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后,还可以通过以下方式查看,输出如下信息时也表示支持。

[root@FORLINX6410]# lsusb -d 1871:01f0 -v | grep "14 Video"bFunctionClass         14 VideobInterfaceClass        14 VideobInterfaceClass        14 VideobInterfaceClass        14 VideobInterfaceClass        14 VideobInterfaceClass        14 VideobInterfaceClass        14 VideobInterfaceClass        14 Video

插到板子上之后可以看到/dev目录下多了一个文件video2 ,在插入摄像头的时候通过输出的信息也能够进行判断,如下图所示:

简单测试

坑爹的飞凌板子给的资料很多,但是文档极差,很多程序源码没啥说明,自己使用可能需要摸索一阵子了。飞凌官方给了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中摄像头使用简要整理相关推荐

  1. 嵌入式Linux中摄像头使用简要整理【转】

    转自:http://www.cnblogs.com/emouse/archive/2013/03/03/2941938.html 本文涉及软硬件平台: 开发板:飞凌OK6410 系统:Ubuntu 1 ...

  2. 嵌入式linux学习笔记--TCP通讯整理

    嵌入式linux学习笔记–TCP通讯整理 之前的项目中使用到了比较多的tcp 通讯相关的知识,一直也没有进行整理,今天准备拿出时间好好的整理一下TCP通讯的整个过程.预计会整理linux和window ...

  3. 嵌入式 Linux 开发工具篇问题整理//C语言测试(杨辉三角、递归调用实现阶乘、计算器、统计字符串出现次数)//2018.07.12.//

    嵌入式 Linux 开发工具篇问题整理 1. 嵌入式开发与传统开发的区别?(同类问题:单片机开发与嵌入式开发的区别)             是否有无操作系统:     2. 移植操作系统的好处有哪些 ...

  4. 嵌入式Linux中的根文件系统

    以下内容转载于http://mp.weixin.qq.com/s/O6MklgKekSc9gbM7zQSMEQ,有删改. 一. 首先要明白的是"什么是文件系统?",文件系统是对一个 ...

  5. 嵌入式Linux中使用SQLite3数据库

    嵌入式Linux中使用SQLite3数据库 SQLite3是一款轻量级的文件型数据库,非常适合嵌入式环境下使用,最近搞的Linux嵌入式项目中需要用到这款数据库,就研究了一下怎么在嵌入式Linux中使 ...

  6. 对嵌入式Linux中的根文件系统的理解和解析

    虽然前面已经利用Busybox制作了根文件系统,但是对于根文件系统的作用和普通的文件系统之间的区别还是有点模糊.通过查找资料总结了一 下对根文件系统的理解,也欢迎大家一起讨论.    首先要明白的是& ...

  7. JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用

    http://www.ibm.com/developerworks/cn/linux/l-cn-jpeg/index.html 一.系统架构 本文以一个实际的产品为例,来说明 JPEG 在其中的应用. ...

  8. windows linux cpu 抢占式 时间片_嵌入式Linux中进程调度怎样来解析

    合作微信:xydf321456 Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统.它能运行主要的UNIX工具软件. ...

  9. 嵌入式Linux中I2C设备驱动程序的研究与实现

    I2C是"Inter Integrated Circuit Bus"的缩写,中文译成"内部集成电路总线", 它是Philips 公司于20 世纪80 年代研发成 ...

最新文章

  1. 复旦副教授魏忠钰:AI和人类对垒「奇葩说」,如何打造智能辩手?
  2. Java实现单例模式
  3. 谷歌云计算机,google云计算的三大核心技术
  4. autocad软件提供的哪些功能可以提高设计效率?_节省80%制图时间:AutoCAD如何有效“手脑”结合,释放创作潜能?...
  5. 走近Flex组件系列(三):按扭组件(Button,CheckBox,LinkBar,LinkButton,PopUpButton,RadioButton,ToggleButtonBar)...
  6. electron打包
  7. android wifi连接手机,Android手机无线连接利器-AirDroid
  8. Spring Boot swagger之前后端分离
  9. idea下载源码出现:Cannot download sources Sources not found for: org.apache.kafka:kafka-clients:2.3.0
  10. IBM/ORACLE/EMC在银行业的重要性
  11. Unity3D Shader系列之护盾效果
  12. SQL 增删改查语句
  13. 电压跟随器不要随便加
  14. web端调用高德API
  15. java使用outlook发邮件
  16. ubuntu安装anaconda3+cuda11.2+cuDNN+pytorch1.7
  17. 服务器项目命名规则,云服务器命名规范
  18. 统计学中三大相关系数
  19. 荣耀路由2 虚拟服务器,华为荣耀路由器2怎么设置? | 192路由网
  20. 打开xshell一直没反应,xshell打开失败的问题

热门文章

  1. C#项目中Form1页面属性介绍
  2. PhpCms V9 调用栏目推荐位的解决办法
  3. docker 中搭建 PHP8 + Apache 环境
  4. 世界上最幸福的职业-鉴黄师
  5. 好用又简单的引流技巧:你只需要一篇软文
  6. 戴尔服务器怎么装xp系统安装教程视频教程,戴尔电脑一键重装系统xp详细步骤...
  7. 路由向html发送信息,使用(40)方式可以阻止从路由器接口发送路由更新信息。A.重发布B.路由归纳C. - 信管网...
  8. 「解决BUG」WIndows 开机进入桌面后一直闪屏刷新,无法打开资源管理器,菜单等界面
  9. 纸鸢|如何申请域名并完成备案和解析详细教程步骤
  10. SSL证书(HTTPS)的加密算法