Chinaunix首页 | 论坛 | 博客
  • 博客访问: 41890
  • 博文数量: 42
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 32
  • 用 户 组: 普通用户
  • 注册时间: 2014-10-30 10:34
文章分类
文章存档

2014年(42)

我的朋友

分类: LINUX

2014-11-19 19:05:07

    对于在嵌入式linux设备上使用USB摄像头,很多人还很陌生,不知道是怎样的工作原理
    我已经在XC2440上实现了针对USB摄像头的多种应用程序,包括预览、拍照、录像、远程视频监控等
    最近有很多用户问我关于USB摄像头的问题,可能在理解上都有误区,以为要自己写驱动
    我写个简短的介绍,说明USB Camera驱动和应用的关系

    USB摄像头原理就是用一个DSP芯片驱动一个CMOS,这个DSP芯片可以提供USB通讯协议,CMOS的所有配置操作都是由DSP控制完成的,CMOS数据流通过USB传给上位机
    从我们用户角度来看,就是把CMOS的CPI接口转成USB接口,但我们不必关心CMOS是怎样工作的,并且软件接口都是统一的

重点强调:USB Camera驱动是linux系统中的,和QT无关,应用程序只是调用linux中的驱动接口,QT只是提供了一个UI框架

几点说明:
1. 我们用的linux内核中已经集成了USB Camera驱动,只需要加入配置选项即可,详见linux内核驱动移植手册的第十八节
2. 光盘里提供的zImage镜像已经包含USB Camera驱动,可直接使用
3. 现在所使用的USB Camera一般都是UVC(免驱)的,不用关心Camera内部使用什么芯片,在配置里只选择UVC即可
4. USB Camera的驱动是标准V4L2结构的驱动,是linux内核中一直都有的,我们不必关心驱动(有兴趣的可以分析),只关心如何写应用程序调用驱动接口
5. 驱动在文件系统下生成的设备是/dev/video0,如果再插一个camera就是/dev/video1,以此类推

对于USB摄像头的要求:(就是电脑摄像头)
1. 支持MJPEG格式的数据流
   我们用的平台和程序只能使用MJPEG格式,由于USB接口协议的限制,不能使用YUYV格式。但有很多摄像头不支持MJPEG,购买之前一定要先了解是否支持MJPEG
2. 至少30万像素
   在前几年,电脑摄像头大部分是30万像素(也有10万的),因为程序中要拍摄640X480的照片,所以最小要30万像素。现在有高清的,130万~500万,价格也较高,但是高清的一般的都支持MJPEG
阅读(295) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~