一个比较详细的Linux摄像头图像采集讲解.docVIP

  • 0
  • 0
  • 约 5页
  • 2016-09-09 发布于重庆
  • 举报

一个比较详细的Linux摄像头图像采集讲解.doc

一个比较详细的Linux摄像头图像采集讲解

这一部分将会介绍如何在linux中对电视卡编程。 开始已经提到过,电视卡使用的是video for linux驱动,简称v4l,实际上,现在已经有了video for linux two驱动 ,即v4l2.它解决了v4l中存在的一些问题,并且提高了硬件性能。但是,目前来说,v4l2仍然没有集成到linux的内核中,要使用v4l2的话,只有去下载v4l2补丁了,以下如无特别说明,所涉及的内容只针对v4l设备而言。 我们都知道,在linux中,为了屏蔽用户对设备访问的复杂性,采用了设备文件,即可以通过像访问普通文件一样的方式来对设备进行访问读写。电视卡在linux中和打印机,鼠标一样,属于字符设备。其主设备号是81,在实际操作上,访问控制电视卡也和一般的设备文件没有什么不同。用open打开设备, int fd; fd = open(/dev/video0,O_RDWR); 用一系列的ioctl发命令控制设备。v4l支持的ioctl命令大概有二十几个,为了尽快的编出一个 简单的图象捕捉程序,让我们先来看看几个主要的命令: 1. ioctl(fd,VIDIOCGCAP,cap); 该命令主要是为了获取电视卡的功能信息。例如电视卡的名称,类型,channel等。参数cap是一个结构,当ioctl命令返回时,结构的各成员就被赋值了,结构体的定义为: struct video_capability { char name[32]; int type; int channels; /* Num channels */ int audios; /* Num audio devices */ int maxwidth; /* Supported width */ int maxheight; /* And height */ int minwidth; /* Supported width */ int minheight; /* And height */ }; channel 指的是有几个信号输入源,例如television,composite,s-video等。 2.ioctl(fd,VIDIOCGCHAN,vc) 3.ioctl(fd,VIDIOCSCHAN.vc) 这两个命令用来取得和设置电视卡的channel信息,例如使用那个输入源,制式等。 vc 是一个video_channel结构,其定义为: struct video_capability { char name[32]; int type; int channels; /* Num channels */ int audios; /* Num audio devices */ int maxwidth; /* Supported width */ int maxheight; /* And height */ int minwidth; /* Supported width */ int minheight; /* And height */ }; struct video_channel { int channel; char name[32]; int tuners;//number of tuners for this input __u32 flags; __u16 type; __u16 norm; }; 成员channel代表输入源,通常,0: television 1:composite1 2:s-video name 表示该输入源的名称。 norm 表示制式,通常,0:pal 1:ntsc 2:secam 3:auto 4. ioctl(fd,VIDIOCGMBUF,*mbuf) 获得电视卡缓存的信息,参数mbuf是video_mbuf结构。其定义如下: struct video_mbuf { int size; /* Total memory to map

文档评论(0)

1亿VIP精品文档

相关文档