怎样在嵌入式Linux系统中使用摄像头

时间:2017-08-12 13:04

  本文主要基于ARM嵌入式模块系统展示在嵌入式Linux中使用摄像头示例,所采用的模块为Toradex VF61,是一款性价比极高但不包含硬件视频编解码加速的模块,核心处理器为NXP/Freescale Vybrid,Cortex-A5和M4异构双核架构。

  1)。 目前越来越多的嵌入式系统采用摄像头应用,其中主要有下面几种方式

  远程监控:如闭路电视系统,操作人员通过摄像头远程监控某个特定区域,小到一个小区,达到市政公共场所,都可能有这样的应用。

  监控视频录制:另外一些监控系统不一定有操作人员一直监控,则会通过录制监控视频的方式在需要的时候调出相关视频进行查阅。

  嵌入式视觉系统:嵌入式视觉系统会对视频图片进行处理并提取更多复杂信息,如雷达和城市智能交通应用。

  视频传感器:如临床诊断设备会对采集的视频图像进行分析来诊断,智能购物设备通过采集视频图像分析使用者特征来定向推广销售等等。

  2)。 环境配置

  。/ ARM嵌入式模块系统:Toradex VF61 以及 Colibri Eva board,详细的配置使用手册请见这里

  。/ 摄像头

  Logitech HD 720p USB摄像头

  D-Link DCS-930L IP 摄像头

  。/ 软件:

  Toradex 标准Embedded Linux发布版本V2.4(已预装),详细介绍请见这里

  GStreamer框架,广泛应用于各种多媒体应用开发,可以实现如视频编辑,媒体流以及媒体播放等多媒体应用,同时配合各种插件(包含输入输出单元,过滤器,编解码器等),GStreamer可以支持多种不同媒体库如MP3,FFmpeg等。所需安装包如下:

  $ opkg update

  $ opkg install gst-plugins-base-meta gst-plugins-good-meta gst-ffmpeg

  查看目前已经安装的插件和单元

  $ gst-inspect

  GStreamer元件(element)和管道(Pipeline)简介

  根据《GStreamer Application Development Manual》章节3所述,元件是GStreamer最重要的对象类,它可以被读取,解码以及显示。管道为多个元件互联一起形成的元件链,可以用于一些特定的任务,如视频播放或捕捉。默认情况下GStreamer 包含大量的元件集以便于开发各种各样的多媒体应用。本文中我们会使用一些管道去展示一些元件的使用。

  下图是一个基本的用于Ogg播放的管道示例,使用一个分流器和两个分支,一个处理音频,另一个处理视频。可以看到一些元件只有src 衬垫 (pad),另一些只有sink衬垫或者两者都有。

  

怎样在嵌入式Linux系统中使用摄像头

  在连接一个管道前,我们同样需要通过 “gst-inspect” 命令查看所需的插件是否兼容,如下示例查看ffmpegcolorspace 插件。

  $ gst-inspect ffmpegcolorspace

  基本信息描述

  -----------------------------------------------------------

  Factory Details:

  Long name: FFMPEG Colorspace converter

  Class: Filter/Converter/Video

  Description: Converts video from one colorspace to another

  Author(s): GStreamer maintainers gstreamer-devel@lists.sourceforge.net

  -----------------------------------------------------------

  Src 和 sink 功能描述

  -----------------------------------------------------------

  SRC template: ‘src’

  Availability: Always

  Capabilities:

  video/x-raw-yuv

  video/x-raw-rgb

  video/x-raw-gray

  SINK template: ‘sink’

  Availability: Always

  Capabilities:

  video/x-raw-yuv

  video/x-raw-rgb

  video/x-raw-gray

  -----------------------------------------------------------

  另如v4l2src元件,它只含有src衬垫功能,所以可以source一个视频流到另一个元件;再有ximagesink元件,它含有rgb格式sink衬垫功能。关于这部分更多详细介绍请关注这里。

  显示一个视频测试图案

  使用下面管道来显示一个视频测试图案

  $ gst-launch videotestsrc ! autovideosink

  

怎样在嵌入式Linux系统中使用摄像头

  其中autovideosink元件自动检测视频输出,videotestsrc元件可利用“pattern”属性生成多种格式的测试视频,如下面为雪花图案测试视频

  $ gst-launch videotestsrc pattern=snow ! autovideosink

  

怎样在嵌入式Linux系统中使用摄像头

  • A+
所属分类:Linux