本文主要基于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衬垫或者两者都有。

在连接一个管道前,我们同样需要通过 "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@
-----------------------------------------------------------
Src 和 sink 功能描述
-----------------------------------------------------------
SRC template: 'src'
***ailability: Always
Capabilities:
video/x-raw-yuv
video/x-raw-rgb
video/x-raw-gray
SINK template: 'sink'
***ailability: Always
Capabilities:
video/x-raw-yuv
video/x-raw-rgb
video/x-raw-gray
-----------------------------------------------------------
另如v4l2src元件,它只含有src衬垫功能,所以可以source一个视频流到另一个元件;再有ximagesink元件,它含有rgb格式sink衬垫功能。关于这部分更多详细介绍请关注这里。
LOT OF 3 MICRO SWITCH BZ-RQ *USED*
SUNX NPS-C7 *USED*
DAYTON 2E477 *USED*
POTTER & BRUMFIELD CB-1011B-79 *USED*
FMC 61444061 *USED*
VICKERS 458141 *USED*
744-2 117V *USED*
LOT OF 2 BANNER MQDC-306 *USED*
SQUARE D TRANSFORMER E0-3 *USED*
TURCK Bi2-G12-RN6X *USED*
MTE 05 560 125 *USED*
BANNER BN2-2 *USED*
TURCK WK31-4M *USED*
TURCK BI5-M18-AD4X *USED*
BANNER ***A91EQD *USED*
OHMITE 0324-500 *USED*
HANNIFIN SS40005023 *USED*
ALLEN BRADLEY 800T-PT16 SER.N *USED*
SOLA 86-24-262 *NICE*
ALLEN BRADLEY 42MBS-5100 SER.B *USED*
HAYWARD BS7110060 *USED*
LOT OF 2 EPIC 10196000 *USED*
LOT OF 3 GOULD 30323R *USED*
BRAD HARRISON 804001B02M060 *USED*
***C AR30-N03-Z *USED*
BANNER MQDC-306 *USED*
LOT OF 2 BANNER PBD *USED*
BANNER PBO *USED*
SQUARE D 8501-GO-4 SER.D 120V *USED*
SQUARE D 8910-J0-3 *USED*
ASCO 238210-058D *USED*
IFM ELECTRIC OG5050 *USED*
DWYER 1991-0 *USED*
ANTUNES CONTROLS ***L *USED*
IFM ELECTRIC IE5207 *USED*
IFM ELECTRIC IF0303 *USED*
HONDA MR-I6L *USED*
TURCK NI 5 *USED*
HAPA 199-20-25-001 BLACK *USED*
FESTO KMF-1-220-5 *NICE*
PPDI PDAH (AS PICTURED) *USED*
KOM LAMB INC. 25496 *USED*
BRAD HARRISON 40948-90 *USED*
JOHNSON CONTROLS P32AC-8 *NICE*
BRAD HARRISON 106000A01F120 *USED*
NUMATICS 061SA400K VALVE *NICE*
GOULD B557 TTL *USED *
BIMBA 313-DZ *USED*
BIMBA 043-NR *USED*
BIMBA 042-D *USED*
BIMBA 020.5 *USED*
DAYTON 6X154E *USED*
OHMITE 1822 *USED*
GENERAL ELECTRIC COIL 981B160-G10 *USED*
SYSTEM SENSOR 2082 *USED*
BIMBA 043-R *USED*
IFM ELECTRIC IS0003 *USED*
BRAD HARRISON 32632 *USED*
LOT OF 2 9101-0122-006 *USED*
SYLVANIA 044017 *USED*
ASCO 64-982-1 D *USED*
FESTO JMTH-5/2-7,0-SV?I *USED*
DWYER 1823-20 *USED*
SOLA 81-24-180-01 *USED*
LOT OF 5 GORDOS (YELLOW) IAC24 *USED*
IFM ELECTRIC OG0030 *USED*
TASOKU 03 L914 *USED*
LOT OF 2 NUMATICS 139-308P *USED*
BIMBA MRS-.087-BL *USED*
WILDEN PUMP P1/SSPPP/TNU/TF?/STF *USED*
LOT OF 2 SQUARE D QO140 CIRCUIT BREAKER *USED*
BIMBA BF-041 5 *NEW OUT OF A BOX*
FANUC A06B-6066-H233 *USED*
LOT OF 5 MALLORY T***92 *USED*
6F30A3SP FUSE HOLDER *USED*
INTERMATIC WG-1603-1 *USED*
DIALCO 095-0463-09-313 MINI PANEL INDICATOR *NEW IN A F...
I*** T12-A110 *USED*
FANUC A66L-6001-0023 *USED*
PARKER PS5387 *USED*
ALFA L***AL 9611920010 *USED*
SPEEDAIRE 2Z767A *USED*
MERLIN GERIN C60N-5A *USED*
DALE RESISTOR SPR-761-1 *USED*
LOT OF 3 LEGRIS 1 / 2 (AS IS) *USED*
BODINE 24A4BEPM-D3 MOTOR *NEW IN A BOX*
FALK 50T GRID *USED*
LENOX 2 1/2" 63MM *USED*
BIMBA 012-0 *USED*
EFECTOR IG5381 IGA3008-ANKG *USED*
DART CONTROLS 123D-C DC MOTOR SPEED CONTROL 24/36VAC *U...
HOLJERON ZL.S-DK101 22W POWERED ROLLER SENSOR *USED*
GC VALVE C225F0ZA18 SOLENOIN COIL *USED*
LOT OF 2 MAGNECRAFT W389CX-8 24VDC *USED*
LOT OF 2 OHMITE L50J-1R0 *USED *
SQUARE D 8536-SB02 SERIES A SIZE 0 *AS IS *
TURCK NI4-Q12-AP6X-H1?141 *USED*
LOT OF 2 LUMBREG RKWT 4/3-632/15M *USED*
LOT OF 2 PETER PAUL ELECTRONICS 2C-14-K24 *USED*
FUJI ELECTRIC EV1274/ 2D1-20A-1K *USED*
LOT OF 2 OMRON P7S-14F-END *USED*
LOT OF 8 ALLEN BRADLEY 700-HN103 SERIES C *USED*
HUMPHREY 250E1-3-10-21-3?6 AIR VALVE *USED*
TURCK BI5-M18-AN6X-H1?141 *USED*
SQUARE D 8501-PH40E SER.B 120V *USED*
SQUARE D 8501-PH40E SER.B 110V *USED*
SQUARE D 2936-S1-C29B 208V *USED*