首页 未命名正文

linux编程_嵌入式Linux中摄像头使用简要整理

云返利网 未命名 2020-05-26 09:07:48 17 0

本文涉及软硬件平台:

开发板:飞凌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 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        14 Video
      bInterfaceClass        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

【关于云返利网】

云返利网是阿里云、腾讯云、华为云产品推广返利平台,在各个品牌云产品官网优惠活动之外,云返利网还提供返利。您可以无门槛获得阿里云、华为云、腾讯云所有产品返利,在官网下单后就可以领取,无论是自己用、公司用还是帮客户采购,您个人都可以获得返利。云返利网的目标是让返利更多、更快、更简单!详情咨询13121395187(微信同号)