基于嵌入式linux的视频图像采集
嵌入式Linux下的视频和图像采集
( ieD v e设 备 描 述 类 ,把 设 备 封 装 为 一 个 对 象 ,将 : do ei V c
V oLnxA 1 ie4 iu P 分解 为一个个 小 的模块 ,作 为它私 有 函数 , E J
只为外部保 留相应 的访 问接 口( 公有 函数 ) 。另外 ,设备 向外输 出的是 图像 ,同样 ,为 了访问的方便 ,将摄像头采集刮 的原始 数据 处理后再 输 出。结合 Q 的类 ,将 R B数据 转化 为 Q m ‘ G I— a 对 象 ,保 存 在 ・ Q m g 个 I ae图 像 向 【 , 该 向量 设 为 1 1 c ieD v e的私有 成 。外 部 通过 Ql ae G tG (n i V do ei c m g e B it ) R
号虑到模块有二个较明显的操作层次 :底层的设备操作 ,中问
层的数据流动 ,上层的视频 显示 与快照等操作。各个层次有 … ・ 定 的独立性 。所 以程序设计面 向对象 ,各个层次用类封装 ,类 中提供外部访 问的接 n。
底 层的设 备可作 为一个 独立 的对象 , 与设备操 作高 度相
关 , 如 设 备 的 打 开 、设 置 、 读 取 数 据 等 。 笔 者 设 汁 r
到来 ,利用嵌入式系统实现远程视频崎挖 、町视电话 和视 频会 议等应用 已成为可能。为 r实现这 应崩 ,实时获得 视频 数据
是 ・ 个重葛环节 针对这 一 点本 文在 基 r嵌入式 Ln x系统 、 iu
支持 隐藏 和显示 . .
仃 卜 用 VdoL u 利 i 4 i x内核 应 编程接 几函数 ,实现 了 单帧 网 e n
r ur —ern et n r o;
~
、
引言
《基于嵌入式Linux的数据采集系统的设计与实现》
《基于嵌入式Linux的数据采集系统的设计与实现》一、引言随着信息技术的飞速发展,数据采集系统在各个领域的应用越来越广泛。
嵌入式Linux作为一种轻量级、高效率的操作系统,在数据采集系统中得到了广泛应用。
本文将介绍基于嵌入式Linux的数据采集系统的设计与实现,旨在为相关领域的研究和应用提供参考。
二、系统需求分析在系统需求分析阶段,我们首先需要明确数据采集系统的功能需求和性能需求。
功能需求主要包括:能够实时采集各种类型的数据,如温度、湿度、压力等;能够实时传输数据至服务器或本地存储设备;具备数据预处理功能,如滤波、去噪等。
性能需求主要包括:系统应具备高稳定性、低功耗、快速响应等特点。
此外,还需考虑系统的可扩展性和可维护性。
三、系统设计1. 硬件设计硬件设计是数据采集系统的基础。
我们选用一款具有高性能、低功耗特点的嵌入式处理器作为核心部件,同时配备必要的传感器、通信模块等。
传感器负责采集各种类型的数据,通信模块负责将数据传输至服务器或本地存储设备。
此外,还需设计合理的电源模块,以保证系统的稳定性和续航能力。
2. 软件设计软件设计包括操作系统选择、驱动程序开发、应用程序开发等方面。
我们选择嵌入式Linux作为操作系统,具有轻量级、高效率、高稳定性等特点。
驱动程序负责与硬件设备进行通信,实现数据的采集和传输。
应用程序负责实现数据预处理、存储、传输等功能。
四、系统实现1. 驱动程序开发驱动程序是连接硬件和软件的桥梁,我们根据硬件设备的接口和协议,编写相应的驱动程序,实现数据的实时采集和传输。
2. 应用程序开发应用程序负责实现数据预处理、存储、传输等功能。
我们采用C/C++语言进行开发,利用Linux系统的多线程、多进程等特性,实现系统的并发处理能力。
同时,我们利用数据库技术实现数据的存储和管理,方便后续的数据分析和处理。
3. 系统集成与测试在系统集成与测试阶段,我们将硬件和软件进行集成,进行系统测试和性能评估。
基于Linux的视频采集软件研究与实现
+
基于 v i v i 发展而来 , 不提供源代码 , 在保 留原始 v i v i 功 能 的基 础 上 , 整 合 了 诸 多 实 用 功 能, 如 支 持 C R A M F S , Y A F F S文 件系 统, U S B下 载 , 自动 识别 L i n u x , w i n c e 等多种操作系统 , 下载程序到内存中执 行。B o o t l o a d e r 可以直接通过 H— J T A G烧写到 N o r
据任务需要 , 进行 内核 配置。其中与配置联系 比较 紧密 的 就 是 “ S y s t e m T y p e ” 、 和“ D e v i c e D r i v e r s ” 菜 单 。在 “ S y s t e m T y p e ” 中选择 ¥ 3 C 2 4 4 0的配置, 在 “ D e v i c e D r i v e r s ” 即设备驱动程序中选择各个驱动程 序的模块 , 而本设计在该菜单 中选择万能摄像头的 驱动程序 。其余按 系统 默认配置。配置过程结束
n e 1 . o r g / , 可以下载任何版本的 L i n u x系统内核。本
文使 用 的是 L i n u ) - 2 . 6 . 2 2 . 6 . t a r . b z 2 。补丁 文件 为
p a t c h一2 . 6 . 2 2 . 6 . b z 2 。
2 . 1 建立 开发环 境和 交叉编译 工具链
c d /wo r k /t o o l s
_ 蚕 ~ ~ 一 曲
交给内核中的体系无及 系统 其余 部 分 的初 始 化 。L i n u x源 代码 是
t a r x j r a r l n— l i n u x— g c c一 3 . 4 . 5一g l i b c 一2 . 3 . 6 .
基于嵌入式Linux的网络视频实时监控系统
式 视频监 控 模 块 传 过 来 的 M E - 频 数 据进 行 解 P G4视
码 , 权用 户直接 通过 I 览器或 者下 载专用 软件 即 授 E浏
可 观看摄 像 机 的视 频 图像 , 可 以 对 系统 进 行 配 置 。 还
第 3 第 9期 4卷 20 0 8年 9月
电 手 工 程 师
ELECTR0NI ENGI C NEER
Vo . 4 No 9 13 . S p. 2 08 e 0
基 于 嵌入 式 Ln x的 网络视 频 实 时监控 系 统 iu
漆 源 , 程 恩 , 子 明 庄
( 门大 学水声通信 与 海洋信 息技 术教 育部 重点 实验 室, 建省 厦 门市 3 10 ) 厦 福 6 0 5
宅小 区 、 幼儿 园的远 程监控 , 是多媒 体 监控 领域 未来 的
发 展方 向
像 机从 C S摄像 头获 得原 始 的视频 信 号 , MO 通过 视 频
1 系统的应用方案
本 系统 中 , 网络 摄 像 头 利 用 以 太 网接 V/ F 模 IWii
块接入 有线/ 线 网 络 , 户 通 过 网 络 用 P 手 机 或 无 用 C、
现简 单 的 I 式 组 网 , 传 统 模 拟 监 控 所 无法 实 现 P方 是
的 。而采用这 种远 程视频 监控 系统 易存 在传输 速度受 限、 系统稳定性 差 等 缺点 。本 文 针对 远 程 的可 视 化 监
和客户 端的媒 体数 据传 输 协议 除 了支 持 R P 实 时传 T(
和立体 声编码 解码 器及 网 络接 r芯 片等 , 丁 开发 出最 小
基于嵌入式Linux的网络视频监控系统
基 于嵌 入 式 Ln x的 网络 视 频 监 控 系统 iu
・ 5・ 5
基 于 嵌 入 式 Lnx的 网络 视 频 监 控 系统 iu
赵 方鹏 , 建 华 ,赵 杨 忠 ,刘 文 涛
7 07 ) 10 2 ( 西北 工业 大学 自动化学院 , 陕西 西安
系统的工作原理 是利 用嵌 入式 Ln x和 A M 控制 器建 立 iu R
We b服务器 , 通过服务器接收来 自浏览器 的指令并 采集 U B摄 S
像 头的视频 图像 , 并通过 网络 向浏览器传输 视频 , 而达到远 程 从
视 频 监 控 的 目的 。 12 系统 硬 件 结 构 .
T e s s m u l sa W e e v rwh c a a t r ie in lf m S ii lc me a a d ta s o tt e sg a o c in ho g h y t b i b s r e ih C c p u e v d o sg a r e d n o U B d gt a r r n p r h i lt l tt r u h a n n e
台上 的应 用程 序 的 移植 。
关 键 词 : 入 式 Ln )视 频 采 集 ; 嵌 iu ; ( 可视 化 ; 网络视 频 监 控 中 图分 类 号 : P9 T 3 文 献标 识 码 : B 文 章 编 号 :O 0— 89 2 o )5— 0 5— 3 10 8 2 (0 7 0 0 5 0
( col fA t t n N r w s r o tc ncl nvri , ia 10 2 C ia S ho o u mao , o h et nPl eh i i sy X’ n70 7 , hn ) o i t e y aU e t
Linux下基于ARM9的嵌入式视频循环采集监控系统
I 据构I J始重 I 初化要 数结
av
_
w ie ha e 0 rt _e dr
—
2 V d o Ln x视频 采集标 准 ie 4 i u 。 】
Vdo L u ie 4 m x是 L x系统视频采集软件 的总接 口。各 mu 种网络摄像 头, 视频采集卡 ,电视卡 以及类似 的设备均归类 于视频采 集领域 ,Vd oL x 为此 提供 了一整套相 应的 ie4 mu AP I接 口。由于各个设备均有 自己独立 的特性 ,Unx系统 i 均在此基础上进行了抽象,本着一切均是文件的设计思想 , 只需要进行 oe ( pn) 方法 即可打开设备文件 ,ra Owre ed / iO分 t 别是对该设备进行读 写传输数据 ,ic ( o t) l 则是对设备参数配
置。
av
— —
w t ri e
Mi o o ue A p c t n V 1 6 N ., 0 0 c c mp t p f a o s o 2 , oS 2 1 r r i i .
文 章 编 号 : 10 -5)(0 080 3 —3 0 77 7(2 1)—0 50
开发应 用
微型 电脑 应 用
21 0 0年第 2 6卷 第 8期
3 采用 F mpg库 实现视 频数据 存储 F e
F mpg是一个集录制 、转换、音, F e 视频 编码解码功能为 体的完整 的开源解决方案。F mp g的开发是基于 L u F e mx 操作系统 , 但是可 以在大多数操 作系统 中编译和使用,包括 wno id ws系 统 等 。F mpg支 持 MP G、DiX、MP G4 F e E v E -、 AC 、 3DV、L F V等 4 0多种编码 , V 、 P G、 G Ma ok 、 A IM E O G、 t sa r AS F等 9 种 解 码 。 O多 F mpg库支持多平台运行,包括 L x F e mu 、Wid ws n o 和 M OS等系统 。 a c 本设计将 F mp g移植到 AR F e M9架构的系 统上 ,通过交叉编译 生成运行库【。 4 j 31 基于 F mpg的视频处理技术 F e F mp g 主 目录 下 主 要 有 U a cdc l afr a F e bv o e 、 i vom t和 b l aui i vt b l等 子 目 录 。 其 中 h ac dc 用 于 存 放 各 个 b vo e e c d/eo e模 块 ,l afr a noe cd d i vom t用于存放 mu e/e xr b xr mu e d 模块,l aui用于存放 内存操作等常用模块。 i vt b l 利用 f e mp g库生成视频文件 ,需要用到两个贯穿始终 的数据结构 :s ut V oma o t t s ut V t a t cA F r t ne 和 t cA Sr m。 r C x r e
基于嵌入式Linux的实时视频服务器的设计
第28卷第4期增刊2007年4月仪器仪表学报Chinese Journal of Scientific Instr umentVol 128No 14Apr 12007基于嵌入式L inux 的实时视频服务器的设计曾凡钢,戴曙光,穆平安(上海理工大学光学与电子信息学院 上海 200093)摘 要:本文介绍了一种网络实时视频服务器的设计和实现方法。
它基于嵌入式Linux 操作系统,采用目前最新的H.264视频编码技术和R TP/R TCP 传输协议,支持视频实时采集、编码、传输。
实验表明,系统实时监测性能良好,图像解码清晰、稳定,具有很强的实用性和广阔的发展前景。
关键词:视频服务器;H.264;R TP/R TC P ;图像压缩N e w design o f real 2time video ser ver ba sed on embedded L inuxZeng Fa ngang ,Dai Shuguang ,Mu Pi ng πan(College of O ptica l a nd Electronics I nf or mation Engi nee ring ,U ni versit y of S ha nghai f orScience and Technology ,S ha nghai 200093,Chi na )Abstract :Thi s paper int roduces a new de si gn of real 2t ime video server ,which supporti ng vi deo capt uring ,en 2coding and t ransporti ng.The server i s ba sed on embedded Li nux ,and compressi ng t he vi deo by H.264enco 2di ng t echnology 2t he newest st andard published by ITU 2T 2a nd R TP/R TCP t ransporti ng protocol.The Expe ri 2ment result s show t hat t he high qualit y of compression and stabilization of t ransporti ng.K ey w or ds :vi deo server ;H.264;R TP/R TCP ;video comp re ssio n1 引 言视频监控系统是日常生产生活中的重要辅助设备,应用十分广泛。
基于嵌入式Linux的视频监控系统
近年来 , 视频监 控在 各行 各业得 到 了广泛 应用 , 但
通讯 , 现 、 传输距离短 、 功耗 高、 需要有人 值守和软件开放性较差等缺点 J而基 . 于 A M 处理器 的嵌入式视频监控系统把从 摄像头 R 9 采集到的图像数据压缩后 , 通过 网络协议栈打包发送 到 It t ne 网络 上 , me 因此 用 户 可 以通 过 因特 网 在 任 何 地点从客户端观看到该设备采集 的图像. 该系统一方 面可以在 I e t n me 上传输 图像数据 , t 基本上不受距 离 限制, 无须重新布线 , 于安装 , 护; 便 维 另一方 面采用 A M技术解决 了传统单 片机处理和传输 图像大数据 R 速 度过 慢 ,ah存 储 量小 , 能 够 实 现 图像 采 集 的 实 l fs 不
序 . 用嵌 入 式 系统 的特 点 和优 点提 高 了视 频 采 集 系统 的应 用性 能及 范 围 , 到 了很 好 的 图像 质 量 , 利 得
关 键 词 : MO C S图像 传 感 器 ;嵌 入 式 Ln x iu ;设 备 驱 动 程 序 ;A M ;视 频 采 集 系统 R 9 中图 分 类 号 :N 1. T 998 文献标识码 : A 文章 编 号 :17 ・2 X 20 )2 0 6 —4 6 104 ( 07 0 ・0 5 0
位处 理 器 C U采用 M t o P oo l r a的龙 珠处 理 器 ; 图像 采 集模 块 中 的 C S图像 采 集 芯 片 采 用 O iio MO mnVs n公 i 司的 0 76 _. 统硬件 平 台结构 图如 图 1 V 603 系 J 所示 .
系统上 电之后 , R 9将通过 I AM c总线对 C O M S 图像传感器的工作寄存器进行初始化设置 , 如开窗 口 位置 、 逐行扫描方式 、 动曝光 、 自 自动 白平衡等, 以便使
基于ARM Linux的图像采集与蓝牙传输
p it( B ih n s d n , i . r hn s/ 5 ) r f “ r t e si n g s \ ” pc b i t e s 2 6 ; t g p it “ oo ri d n , i . oo r 2 6 ; r f C lu \ ” pc c l / 5 ) n ( s t u p it “ o ta t s%d n , i . o tat 2 6 ; r f C n rs i n ( \ ” pc c n r s/ 5 ) t p i f“ i n s r t( Wht e s s%d n , i . h e e s 2 6 ; n e i \ ” p t w h n s / 5 ) c p it “ e t r f D p hi n ( s%d n ,pc d p h ; \ ” i . e t ) t
头, 一个 接 US B蓝 牙 适 配 器 ; 通 过 US 将 B摄 像 头 采 集 到
的图像数据 输出到缓 冲区 中 , 存成 文件 , 保 并通过 蓝牙 传
输 到 蓝牙 手 机 上 。
价格 , 良好 的性能 , 加上 Ln x下有 V4 iu L支 持对 其 编程 ,
很 容 易 集 成 到 嵌 入 式 系 统 中 。 蓝 牙 技 术 是 目前 被 认 可 的 短 距 离 无 线 通 信 技 术 , 泛 应 用 于 手 机 、 脑 以 及 汽 车 免 广 电 提 系 统 本 文 介 绍 基 于 嵌 入 式 Ln x的 US 图 像 采 集 系 统 , iu B 并 通 过 构 建 好 的 嵌 入 式 Ln x下 的 蓝 牙 环 境 将 采 集 到 的 iu 图片传送到蓝牙手机上 , 现监控功能 。 实
基于嵌入式Linux的视频采集与传输系统研究
¥ C 40采 用 1 乐供 电 , 高 主 频 可 达 2 3M z适 合 32 1 . V电 8 最 0 H ,
面向高性价比 、 低功耗的应用场合。 系统使Ⅲ 的是 中星微公司的 U B摄像头 ,其主芯片为中星 S 微 Z 0 0 b 通过连接到平 台 U B主口来实现图像采集。该摄像 C 33 , S 头的C O M S同像传感 器为 M 0 6 。尽管 C S罔像传感 器在成 130 MO
测试结果。
关 键 词 : 入 式 Ln x 视 频 采 集 与 传 输 系统 ;o k tV d o Ln x 嵌 iu ; sc e ; i 4 iu e
中 图分 类号 :P l. T 3 1 5
文献 标 识 码 : A
随 着 通 信 技 术 和计 算 机 技 术 的 发 展 , 视 会 议 、 视 电 话 、 电 可 远 程 监 控 、 能 交 通 、 能小 区等 以信 息 采 集 、 理 、 输 为 核 心 智 智 处 传
网 口下载 到 目标平 台上 运 行 , 过主 机 终 端 打 印调 试 信 息 。文件 通
系统 存储 了系 统 配 置 文 件 、 备 驱 动 程 序 和 开 发 的 应 J 程 序 等 。 设 【 } j
其中 , S U B摄像头 的驱动和图像 的以太网传输是重点 。
21 视 频 设 备 驱 动模 块 .
¥ C 40处 理 器 , 32 1 它是 基于 A M90 R 2T内 核 的 1 位 /2 R S 6 3 位 IC结 构 。这款 芯 片集 成 了 以下 部件 : MMU、外 部 存储 器控 制 器 、 A D N N F A H控 制 器 、C LS L D控制 器 、 S U B主 口以 及 U R 从 A T通道 等 。
基于ARM和Linux的视频图像采集系统
(1)打开视频设备,获得文件描述符 摄像头在系统中对应的设备文件为/dev/video0,采用系统调用函数video_fd=open(“/dev/video0”, O_RDWR,0),video_fd为设备打开后返回的文件描述符,以后的系统调用函数就可以使用它来对设备文件进行操作了。接着用ioctl(video_fd,VIDIOC_QUERYCAP,&cap)函数读取v4l2_capability中的有关摄像头的信息。该函数成功返回后,这些信息从内核空间拷贝到用户程序空间capability各成员分量中,使用printf函数就可以得到各成员分量信息。 (2)设置图片格式 将图片宽设为320,高设为240,其他参数保持默认。 struct v4l2_format fmt; CLEAR(fmt); fmt.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; fmt.fmt.pix.width=320; fmt.fmt.pix.height=240; fmt.fmt.pix.field=V4L2_FIELD_INTERLACED; fmt.fmt.pix.pixelformat=VIDEO_FORMAT; if(ioctl(video_fd,VIDIOC_S_FMT,&fmt)<0) { exit(1); } (3)分配缓冲区 struct v4l2_requestbuffers req; CLEAR(req); req.count=4; req.type=V4L2_BUF_TYPE_VIDEO_CAPTURE; req.memory=V4L2_MEMORY_MMAP; if(ioctl(video_fd,VIDIOC_REQBUFS,&req)<0) { exit(1); } 然后通过调用ioctl(video_fd,VIDIOC_QUERYBUF,&buf)获得缓冲区的长度(buf.length)和偏移地址(fd,buf.m.offset),将这两个参量作为参数传给mmap函数:buffers[num].start=mmap(NULL,buf.length,PROT_READ|PROT_WRITE,MAP_SHARED,fd,buf.m.offset);缓冲区分配好之后,驱动并不会向里面写入数据,还需要将每个缓冲区放入视频采集队列:ioctl(video_fd,VIDIOC_QBUF,&buf); (4)启动采集过程,读取数据 完成以上初始化设置工作后,就可以对视频进行采集了,有直接读取read()和内存映射mmap()两种方法。read()通过内核缓冲区来读取数据;而mmap()通过把设备文件映射到内存中,绕过了内核缓冲区,最快的磁盘访问往往还是慢于最慢的内存访问,因此mmap()方式加速了I/O访问。另外,mmap()系统调用使得进程之间通过映射同一文件实现共享内存,各进程可以像访问普通内存一样对文件进行访问,访问时只需要使用指针而不用调用文件操作函数。因为mmap()的以上优点,所以在程序实现中采用内存映射方式。 应用程序调用VIDIOC_STREAMON来启动采集过程: enum v4l2_buf_type type= V4L2_BUF_TYPE_VIDEO_CAPTURE; ioctl(fd,VIDIOC_STREAMON,&type); 采集过程开始以后,驱动会不停地将数据写入分配的缓冲区内,当一个缓冲区的数据准备就绪后,驱动就会将其放入输出队列,等待应用程序的处理。当所有的缓冲区都进入输出队列后,驱动将停止采集,并等待缓冲区重新放入采集队列。读取数据时,首先需要将一个缓冲区出队列: struct v4l2_buffer buf; ioctl(fd,VIDIOC_DQBUF,&buf); 驱动会从输出队列取出一个缓冲区,并将其序号赋值给buf.index,应用程序可以通过buffers[buf.index].start来访问缓冲区的数据。当处理完成后,需要将其重新放入采集队列:ioctl(fd,VIDIOC_QBUF,&buf); (5)停止采集 首先停止采集过程ioctl(fd,VIDIOC_STREAMOFF,&type),然后使用munmap函数删除映射,最后调用close(fd)函数关闭设备。 视频图像显示模块使用GUI软件提供的API函数的方法进行视频图像显示。视频显示程序基于Qt库来编写,原理是将buf的内容转为image再转为pixmap,然后显示出来。按照以上编写流程编写视频显示程序后,通过交叉编译器编译出目标平台能够执行的代码,下载到开发板中,即可实现视频的实时采集。4 测试结果与分析 在目标平台上运行编写的视频采集程序,摄像头所采集到的实时动态图像的截图。从图中可以看出,该系统所提供的视频画面图像质量较好,完全可以满足实际应用中对画面质量的要求。
基于ARM和Linux的网络视频采集传输方案的设计和实现
基于ARM和Linux的网络视频采集传输方案的设计和实现刘宇;车进【摘要】针对现有的视频采集设备占用较多空间,而且需要使用专用资源的情况,设计了一个基于嵌入式的网络视频采集传输方案.该方案采用ARM11为核心处理器,嵌入式Linux为软件平台,搭建嵌入式平台.将视频服务器MJPG-streamer移植到该嵌入式平台,实现图像的采集、压缩和传输,使用者可在Web浏览器中观察到远端的实时视频画面.实验结果表明,该方法能够很好地采集、处理和发送视频,实现远程观察实时的视频画面,且设备占用空间较小.【期刊名称】《宁夏工程技术》【年(卷),期】2014(013)001【总页数】4页(P30-32,36)【关键词】嵌入式系统;Linux;MJPG-streamer;视频图像采集【作者】刘宇;车进【作者单位】宁夏大学物理电气信息学院,宁夏银川 750021;宁夏大学物理电气信息学院,宁夏银川 750021【正文语种】中文【中图分类】TN919.8;TP368.1在日常生活中,视频采集的应用场合很多,诸如门禁、安防、远程视频会议等.现有的视频采集设备,模块较多,在使用中要占用很多空间.因此,本文提出了一种基于B/S结构的嵌入式Linux的网络视频采集传输方案,该方案取代了以前占用空间较多的视频采集设备,而将图像采集、图像的压缩和编码以及网络传输集成到一个体积小、占用资源少的嵌入式系统中,通过远端的浏览器观察视频画面.1 总体设计本方案采用飞凌嵌入式公司出品的ARM11开发板TE6410作为硬件平台,Linux 操作系统作为软件平台,通过USB摄像头采集图像,然后利用MJPG-streamer 视频流服务器及其相关插件获取、处理图像[1],并通过网络发送到用户平台,用户可以通过浏览器查看视频.方案整体结构见图1.图1 方案整体结构图2 方案硬件设计本方案主要采用ARM11开发板TE6410、USB摄像头和一台计算机.TE6410开发板搭载了三星公司出品的s3c6410核心板,主频高达533MHz,配有256 MB的DDR内存和4GB的NAND FLASH.TE6410开发板有3个串口,一个LCD扩展口,一个100 M网口.它标配的USB Host插口和USB Slave插口均为2.0标准,采用8位拨码开关选择不同的启动方式.外部扩展端口包括一个SD卡槽,一个Wi-Fi扩展接口,以及摄像头接口和J-TAG接口等.USB摄像头采用罗技公司的C270网络摄像头.采用一台运行Ubuntu12.10操作系统的计算机作为用户平台.方案硬件结构见图2.图2 方案硬件结构图3 方案软件设计本方案软件设计主要包括U-Boot,Linux内核,rootfs.yaffs2,MJPG-streamer 软件的修改和移植[2].方案软件框图见图3.U-Boot是在操作系统运行之前运行的一段小程序,用来完成硬件设备的初始化,从而将系统软硬件环境带到合适状态,为最终调用操作系统做好准备.编译好的U-Boot可以在TE6410开发板附带的光盘里找到.Linux内核采用3.0.1版本,该版本的内核包含USB摄像头的驱动和V4L2驱动框架[3].当内核烧写到开发板中,插上USB摄像头便自动识别.本方案采用rootfs.yaffs2作为TE6410的文件系统.rootfs.yaffs2是一个专门为NAND FLASH存储器设计的嵌入式文件系统,适用于大容量的存储设备,而且它是开源软件,所以采用rootfs.yaffs2作为文件系统[4].MJPG-streamer是一个开源项目,通过支持Linux-UVC的网络摄像头采集JPEG 图像,并且将采集到的图像流式传输成为M-JPEG视频流,通过网络传输给浏览器.它是一个可移植的Linux-UVC流媒体应用.之前,国外的嵌入式爱好者将MJPG-streamer项目移植到了Mini2440平台,并设立了一个名为mjpg-streamer-mini2440的开源项目.基于TE6410开发板,笔者在mjpg-streamer-mini2440开源项目的基础上进行拓展,使之能够移植到TE6410开发板上正常使用.图3 方案软件框图3.1 交叉开发环境的搭建TE6410开发板采用U-Boot作为引导程序、嵌入式Linux系统镜像(版本号为3.0.1)和rootfs.yaffs2文件系统.将这3个文件从开发板附带的光盘里复制到SD 卡中,SD卡插入开发板的SD卡槽,开发板设置为SD卡启动模式,启动开发板一键安装嵌入式Linux系统.交叉开发环境需要Linux桌面系统,选用Ubuntu12.10.首先在计算机安装VMware8.0虚拟机,在虚拟机中安装Ubuntu12.10;再在Uubuntu12.10中安装交叉编译工具链Arm-Linux-Gcc-4.3.2;之后使用VMware8.0自带的VMware-Tools实现虚拟机和主机的文件共享;最后将虚拟机设置为桥接方式使之能够上网,并将虚拟机和开发板设为同一网段后使用ping命令将虚拟机和开发板连通.3.2 MJPG-streamer移植过程将MJPG-streamer视频流服务器移植到TE6410开发板上运行,从而实现图像采集和网络传输,具体移植过程如下:(1)下载mjpg-streamer-mini2440项目源代码:mjpg-streamer-mini2440-read only,并放在ubuntu的一个文件夹中(比如/mnt/webcamera文件夹). (2)进入 webcamera文件夹中,用 VI编辑start_uvc_yuv.sh 的内容[5]:执行以下命令进行编译链接并打包[6]:在当前目录下会生成mjpg-streamermini2440-bin.tar.gz.经过以上步骤,已将参数配置成适合TE6410开发板和USB摄像头的环境,将它复制到SD卡中.(4)在TE6410开发板上安装MJPG-streamer.将SD卡插入开发板的SD卡槽里,在开发板的终端输入以下命令安装MJPG-streamer:3.3 M-JPEG压缩算法研究与实现M-JPEG视频编码格式,把运动的视频序列当作连续的静止图像来处理,该压缩方式单独完整地压缩每一帧,在编辑的过程中可随机存储每一帧,可进行精确到帧的编辑.其主要特点是基本不考虑视频流中不同帧之间的变化,只单独对某一帧进行压缩.M-JPEG单帧压缩算法为JPEG算法,即把一幅图像分成8×8的方阵之后进行离散余弦变换(DCT).离散余弦变换是将光强数据转换成频率数据,从而得知强度变化情况.因为人类视觉系统对图像的低频成分比对高频成分有更高的敏感度,因此如果对图像的高频成分进行量化,再还原成光强数据,尽管与原图像有些差异,但人眼难以分辨[7].JPEG压缩是有损压缩,损失的部分是人类视觉不容易觉察到的高频成分,节省大量需要处理的数据信息.以下就是JPEG所使用的二维DCT公式式中:f(i,j)为像素值,F(u,v)为变换系数,u,v为系数下标.在压缩时,将原始图像分成很多个8×8像素的图像数据块.之后,通过零均值化,将每个字节的值从0~255转为-128~+127,并以此作为离散余弦正变换FDCT(Forward DCT)的输入.FDCT将每个数据块的值换为64个DCT系数,第1个系数称为直流系数,而其余63个系数则称为交流系数.在解压缩时,经逆向IDCT(Inverse DCT)将64个DCT系数还原为8×8像素的数据块,然后组成完整图像[8].4 方案测试USB摄像头插入开发板的USB Host端口,开发板上电.首先,在超级终端下进入TE6410开发板,使用ping命令将虚拟机和开发板连通.之后,启动开发板上的服务器端.此时,MJPG-streamer启动,并且其输入组件通过USB摄像头采集JPEG 格式的图像,保存到内存中;网络服务器输出组件能够从内存中获取JPEG格式的图像,并将图像流式传输成为M-JPEG视频流,通过网络服务器发送给计算机.在虚拟机的Web浏览器中输入开发板IP地址发出访问请求,服务器收到访问请求后与客户端建立连接并将视频数据发送到客户端监听端口,用户可以在虚拟机的Web浏览器中观察到实时的视频画面.测试在Ubuntu12.10操作系统下完成,采集原始图像的格式为YUYV,分辨率为640×480,转换成JPEG格式图片的压缩率为0.8∶1.在此测试环境中,视频画面清晰、流畅,实时性好.本方案的测试对照结果见图4,图4a是开发板的液晶屏上显示的YUYV格式图像,图4b是用户平台的Web浏览器中显示的JPEG格式图像.图4 方案的测试对照结果5 结语本方案使用支持Linux-UVC的USB摄像头采集图像,采用飞凌公司出品的ARM11开发板TE6410和嵌入式Linux操作系统处理图像,通过移植MJPG-streamer视频流服务器,实现基于网络的视频采集传输.本方案是一种结构紧凑、占用空间很小的网络视频采集传输方案,不仅USB摄像头非常容易获得,而且充分利用现有的网络资源,不必使用额外的设备或资源.本嵌入式视频采集传输方案将在视频会议、交通监控等方面有很好的应用前景.参考文献:【相关文献】[1]杨宏,张志文.基于Web的嵌入式远程监控系统的研究与实现[J].计算机与数字工程,2012(10):70-72.[2]冯兴乐,王建建,张哲,等.基于嵌入式Linux的无线图像传输在车联网的应用[J].电视技术,2012(21):156-159.[3]于艳萍,朱晓智,王中训.基于ARM9和USB摄像头的网络视频采集系统设计[J].现代电子技术,2011(24):49-51.[4]陈毅辉,王存堂,钱帅杰,等.模糊智能控制在卷绕系统中的应用[J].机械设计与制造,2006(7):146-148.[5]庄严,王骁,汤建敏.嵌入式C/C++系统工程师实训教程[M].北京:清华大学出版社,2011.[6]韦东山.嵌入式Linux应用开发完全手册[M].北京:人民邮电出版社,2009.[7]祝宁,叶念渝.JPEG图像文件格式的分析及应用[J].电脑与信息技术,1999(3):21-24.[8]许刚,廖斌,李承毅.JPEG图像文件格式分析[J].计算机系统应用,1998(10):37-39.。
开题报告_基于嵌入式系统的图像采集系统
北京联合大学毕业设计(论文)开题报告题目:基于嵌入式系统的图像采集系统专业:电子信息工程指导教师:高美娟学院:信息学院学号: 2008080303107 班级: 0808030301 姓名:华永奇一、课题任务与目的1、课题任务图像采集系统作为一种比较通用的图像采集装置,在各个行业有着广泛应用,本题目设计以嵌入式系统为核心的图像采集系统,具有一定的通用性。
基本要求:⑴设计系统的总体方案。
⑵设计图像传感器与嵌入式系统的接口。
⑶设计图像采集和存储的软件。
⑷部分实验及调试。
⑸撰写毕业设计论文,答辩。
2、课题目的嵌入式是当今最为热门的概念之一,嵌入式系统是指以应用为核心,以计算机技术为基础,软硬件可剪裁,对功能、可靠性、成本、体积和功耗有严格要求的专用计算机系统。
其应用已经渗透到各个领域,无论是在工业控制、交通管理、信息家电、安防,还是个人手持设备,都有着非常广泛的应用。
而且,随着智能化、信息化和网络化发展,“后PC时代"已经来临,这预示着嵌入式系统技术将会获得更为广阔的发展空间。
例如,在通信领域,数字技术正在全面取代模拟技术:在广播电视领域,美国已经开始实施模拟电视数字化,我国在2015年之前,也将会全面实现数字电视;在个人领域,各种嵌入式产品也将为个人提供移动数据处理和网络通信等功能。
而这些都离不开嵌入式技术的应用。
视频监测是安全防范系统的重要组成部分,它是一种防范能力较强的综合系统。
视频监测以其直观、准确、及时和信息内容丰富而广泛应用于许多场合。
近年来,随着计算机网络以及图像处理、传输技术的飞速发展视频监测技术也有了长足的进步。
正是由于数字视频监测具有传统模拟监测无法比拟的优点,而且符合当前信息社会中数字化、网络化和智能化的发展趋势,所以数字视频监测正在逐步取代模拟监测,广泛应用于各行各业。
对于本毕设的研究,即对结合了嵌入式、网络、图像处理和传输技术于一体的嵌入式网络视频图像监测系统的研究,意义是明显的。
基于嵌入式Linux视频采集系统设计
的视频采集 系统 . 实验结果表明 , 系统采集到的图像 清晰, 该 可以适应 不同场合的需要。
关 键 词 :3 40;iu ; 频 采 集 ¥C2 1 Ln x 视 中图 分 类号 : P 1 T 36 文 献标 识 码 : A 文章 编 号 : 7 — 4 X( 0 )1 0 8 - 2 1 2 5 5 2 1 0 — 0 20 6 1
基 础 上 建立 交 叉 编 译 调 试 的开 发 环 境 。
接 口、 C接 口、2 口、 U B接 口控制器 、 1 2 IS接 2个 S 2路 S I主频 P,
最 高可达 2 3 z 0 。在处理器丰富资源的基础上 , MH 还进行 了相
关 的配 置 和 扩 展 , 台 配 置 了 6 平 4MB的 N N l h和 6 A DFa s 4 MB
图 像 和视 频 连 续 帧 的采 集 。
1 硬 件 系统
本文使用 的系统平 台硬件 功能框图如图 1 所示 。该平台
采 用 Sm ug公 司 的处 理 器 ¥ C 4 0 该 处 理 器 内部 集 成 了 a sn 3 2 1。 A M 公 司 A M9 0 理 器 核 的 3 微 控 制 器 ,资 源 丰 富 , R R 2 T处 2位 带 独 立 的 1 B的 指 令 C c e 1 B数 据 C ce L D控 制 6k ah 和 6k ah 、 C
先构 建完 善的嵌 入式 系统 开发 环境 ,然后 才 能进行嵌 入式
Lnx操作系统 的抑止等工作 。交叉 编译 环境 为在 P iu C机上开
发、 编译和调试针对 目标平 台的代码 提供了很大的方便 , 有效 地缩短 了开发周期 , 降低 了二次开发 的难度 。
就 编 译 开 发 环 境 的 建 立 而 言 ,基 于 Ln x的应 用 开 发 环 i u 境 ,一 般 是 由 目标 系统 硬 件 开 发板 和 宿 主 机 P C机 所 构 成 的 。 硬 件 开 发 板 用 于 操 2位 的 S R M。另J  ̄ 出了一个 HO TU B接 口。通过在 D A ' I l - S S U B接 口上外接 一个带 U B口的摄像 头 , 采集 到 的视频 图 S S 将 像数据放入输入 缓冲区中 。然后 , 或者保存成 文件 的形 式 , 或 者运行移植到平台上的图像处理程序 ,对缓 冲的图像数据直
基于嵌入式Linux视频图像采集系统的设计与实现
20 0 8年第 7期
福 建 电
脑
13 5
基 于嵌入式 Ln x iu 视频 图像采集 系统 的设计与 实现
许 明流 ,邓 王 国 ,刘 智 勇
( 邑大 学 34信 箱 广 东 江 f 2 0 0) 五 0 1 92 5 【 摘 要 J 利 用 AR 技 术 设 计 和 实现 了一种 基 于 嵌入 式 Lnx的视 频 采 集 系统 。 该 系统 通 过 U B摄 像 头 采 集视 频 图 : M iu S 像 , 用 Lnx的 Vdo 调 iu ie4接 口模 块进行视频截取和数 字化处理 , 用嵌入式 Q 使 T完成 图形界面的开发。系统测试结果表 明: 该
对 L n x经过 小 型 化 裁 减 后 .能 够 固化 在 容 量 只有 几 百 K字 节 iu
( h e; coys I o f ue- lfr n x gn r — + e oyseh e ). ni r pa om l u— eei g + c / c g t i c
-
或 几 兆 字 节 的储 存 器 芯 片 中 . 于 特 定 嵌入 式场 合 的 专用 Ln x 用 iu
无 线 系统 等 各类 产 品 市 场 . 于 A M 技 术 的 微处 理 器 应 用 占据 用 第 ~ 种 方 式 所 用 S C 4 0 基 R B 2 1 X开 发 板 的 U B主控 器 驱 动 程序 S 了 3 位 RS 2 IC微 处 理 器 7 % 以上 的 市 场 份 额 . R 技 术 正 在 逐 模 块 为 U B O C —s C 4 0 在 Ln x 要 采 集 视 频类 数 据 . O A M S — H I 321 。 i 下 u 还
操 作 系 统
达芬奇平台的嵌入式Linux图像采集与显示
达芬奇平台的嵌入式Linux图像采集与显示祝夏雨;熊九龙;王志虎;王晓明【摘要】在模式识别等领域,需要进行实时快速的图像处理.本文设计了基于达芬奇系列芯片TMS320DM6446的硬件平台,介绍了建立Linux开发环境的方法,利用Video4Linux和framebuffer实现了基于嵌入式Linux的USB摄像头图像采集与显示,采集到的图像可以直接送给DSP内核,进行高速的图像处理.【期刊名称】《单片机与嵌入式系统应用》【年(卷),期】2014(014)001【总页数】4页(P34-36,46)【关键词】达芬奇;Linux;图像采集;DM6446;Video4Linux;framebuffer;USB摄像头【作者】祝夏雨;熊九龙;王志虎;王晓明【作者单位】王晓明国防科技大学机电工程与自动化学院,长沙410073;王晓明国防科技大学机电工程与自动化学院,长沙410073;王晓明国防科技大学机电工程与自动化学院,长沙410073;王晓明国防科技大学机电工程与自动化学院,长沙410073【正文语种】中文【中图分类】TP391.41嵌入式图像采集系统具有体积小、成本低、稳定性高等优点,在远程可视电话、计算机视觉、网络会议等领域应用广泛。
然而,一些图像处理领域,如无人驾驶、模式识别,对运算速度、运算量要求较高,传统的基于ARM芯片的嵌入式图像采集系统往往无法满足这一要求。
TI公司的达芬奇技术集成了DSP内核和ARM内核,是典型的基于共享存储的嵌入式多处理器环境[1]。
它既具有ARM对外设强大的管理能力,又拥有DSP对数据信号的高速处理能力,因而可以很好地满足图像处理对运算速度和运算量的要求。
Linux操作系统具有内核稳定、功能强大、支持多种硬件平台、源代码开放、可裁剪和低成本等众多优点,使其在嵌入式领域备受青睐。
本文在基于达芬奇技术的嵌入式linux平台上,利用OV511为控制芯片的网眼2000 USB摄像头为采集模块,使用Video4Linux内核API接口函数以及framebuffer编写相应的程序,实现了图像的采集与显示,为DSP内核后续的图像处理奠定了基础。
基于ARM9的嵌入式Linux图像采集系统设计
具体修改。一般 b p m 文件 由 4个部分构成 : 文件 头信 息块 、 图像 描述 信息块 、 色表 ( 真彩色模 式 颜 在
无 颜 色表 ) 图像数 据 区。本 文采集 的是真彩 色 图 和
图 1 系统 硬 件 结 构 图
2 系统 软 件 设 计
由于 3 2位处 理 器 A M 管 理 的资 源 较 多 , R 因
1 系统 硬 件 设计
系统 硬件结 构如 图 1所示 , 中处理 器采 用 的 其 是 Smsn 司 的 ¥ C 40 其 内 部集 成 了 A M a ug公 32 1, R 公 司的 A M90 处 理 器 核 , 频 最 高 可 达 2 3 R 2T 主 0 MHz另 有 1k , 6B的指令 和数 据 C C A HE、 理 虚 拟 处 存 储 器 管 理 的 MMU、 部 存 储 器 、 制 器 等 。 外 控
维普资讯
・
智 能控制 、 检测 技术 及应 用 ・
王 培珍
徐 俊生
基于 A RM9的嵌 入式 Lnx图像 采集 …… 8 iu 5
基 于 ARM9的嵌 入 式 Ln x图像 采 集 系 统 设 计 iu
王培珍 , 徐俊 生
( 安徽 工业 大学 电气信 息学 院 , 安徽 马 鞍 山
230 ) 40 2
摘要 : 建 了一 个基 于 A 构 RM9处理 器 ¥ C 4 0的 图像 数据 采 集 系统 , 32 1 阐述 了系统 的硬件 架构和基
于 AR —Ln x系统 下的数 字 图像 的 采集软 件 系统 , M iu 包括摄 像 头驱 动 、 图像截 取 、 存储 和 显 示等 。 系统 在 实际 中取 得 了良好 的效 果 。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于嵌入式linux的视频图像采集[摘要] 本文主要介绍在linux操作系统、arm xsbase270平台上,利用linux内核中已经植入video4linux函数库的数据结构和api函数,通过ov511摄像头实现视频采集的方案,本方案采用qt designer为开发环境,以效率较高的mmap(内存映射)方式截取视频;可保存单张的图片,也可保存为视频。
[关键词] 视频采集 video4linux 嵌入式linux mmap一、引言随着多媒体和通信技术的发展,越来越多的人希望能够直接通过屏幕,看到所要监控的信息。
如:视频监控、webcam、视频会议和可视电话,摄像机等。
嵌入式系统的发展越来越集成化,功能也越来越强大。
本文论述的是基于嵌入式linux系统的视频采集模块的设计与实现。
由于linux对视频的支持是通过video4linux提供的。
并且red hat9.0内核中已经包含了video4linux软件包,所以利用video4linux编程接口就可以在xscale270平台实现对ov511 usb 摄像头图像数据的采集;使用qt进行界面设计,同时对需要的图像进行保存。
最终通过交叉编译连接,生成在arm平台上运行的程序。
作为大学生创新项目,通过相关的开发与研究,可以熟练地掌握嵌入式系统的开发流程,以及对其中涉及到的相关技术有较为深入的理解。
二、系统内核的定制在linux系统下对摄像头的支持是通过内核中video4linux模块的加载来实现的,而该模块的加载可以是静态加载也可以是动态加载。
1.静态加载这种加载方式使视频支持模块嵌在新生成的内核中;虽然会使内核的尺寸变大,但系统运行可靠。
其基本流程是:(1)运行make menuconfig或make xconfig;(2)选择multimedia device->下的video for linux(选为*号标示;这个选项的目的是加载video4linux模块,为视频采集设备提供了编程接口);(3)在usb support->目录下,选择support for usb和 usb camera ov511 support(同样选为*号标示;这使在内核中加入了对ov511接口芯片的usb数字摄像头的驱动支持);(4)保存配置并退出;(5)make dep;make zimage此时在/tftpboot下就生成了带有ov511驱动的内核。
2.动态加载这种加载方式不会将视频支持模块嵌在新生成的内核中,只是告诉linux系统在需要的时候以模块方式调用,所以生成的内核相对较小。
与静态加载相比差别在于选择usb camera ov511 support 时选为标示;另外,还要运行make modules编译模块,其它的步骤与静态加载相同。
三、用video4linux api获取视频图像在linux系统中将设备视为特殊文件以便于对其进行操作。
要用video4linux api获取视频图像,首先,打开视频设备;这通过调用open函数来实现,它返回设备文件描述符,以后的系统调用函数就使用该描述符来对设备进行操作;接着,读取设备信息;这可以得到结构类型各成员域中有关摄像头的信息;然后,设置设备的属性,比如图像的亮度、对比度等等。
最后,进行视频采集。
有两种方法实现视频数据的获取:1.文件读写文件读写的方式是通过read()和write()函数对摄像头进行读写,然后分配缓冲区存放。
这样每次都要调用read()对数据进行拷贝,设备的速度相对于内存的速度来说的比较慢的。
2.内存映射在linux下,设备就是文件,文件的读写是慢速的,mmap方法可以将普通文件映射进内存,这样就可以通过访问内存的速度来访问文件。
图像的信息是非常大的,采用mmap进行读取数据,会整体提高采集性能。
四、视频采集的实现1.视频采集时一些参数的初始化定义的函数原型为v4l_grab_init(v4l_device *vd,int width,int height)参数vd为自定义的数据结构struct_v4l_device,设置宽、高、帧使用情况的属性等。
该函数的重点代码如下:vd->mmap.width = width;vd->mmap.height = height;vd->mmap.format = vd->picture.palette;vd->frame =0;vd->framestat[0] =0;vd->framestat[1] =0;vd->frame为当前帧,framestat[]标记该帧是否已被使用。
0表示未被使用2.获取支持的帧数和基地址v4l_get_mbuf( v4l_device *vd )v4l_mmap(v4l_device *vd)首先,使用vidiocgmbuf命令将摄像头的帧缓存的大小映射到vd->mbuf.size,正使用的帧(0或1)映射到vd->mbuf.frames中,执行完该命令后,就可以用mmap函数将缓存映射到内存中了。
if(ioctl(vd->fd,vidiocgmbuf,&(vd->mbuf))map中,这样才能对获取到的数据进行操作。
在mmap函数里prot_read表示可读取该内存页, prot_write 则是可写入, map_shared 则是让这块mapping的区域和其它进程共享。
第一个参数为0是启始位置,vd->mbuf.size则是长度(length)。
vd->fd则是设备的文件描述符,最后一个参数是offset。
if((vd->map =(unsigned char*)mmap(0,vd->mbuf.size,prot_read|prot_write,map_shared,vd->fd,0)) mmap.frame =frame;if(ioctl(vd->fd,vidiocmcapture,&(vd->mmap))framestat[frame] =1;因为之前用framestat[]数组来记录哪个frame已经被使用,所以一开始要先判断目前的frame是否已经被使用:if (vd->framestat[frame]){printf(“already used.\\n”, frame);return -1;}如果没有被使用,就把mmap的frame填入frame编号,然后利用vidiocmcapture取影像。
结束前要把目前frame的状态标示成使用中,然后把framestat指定成现在的frame,完成工作后离开。
ioctl(vd->fd, vidiocmcapture, &(vd->mmap ) )是非阻塞的函数。
4.等待一帧截取结束该功能由int v4l_grab_sync(v4l_device *vd ,int a)函数实现,参数vd为自定义的数据结构struct _v4l_device,frame值为0或1,意为第0帧或第1帧数据,成功返回0,失败则为-1;代码如下: if(ioctl(vd->fd,vidiocsync,&frame) framestat[frame] = 0;return 0;ioctl(vd->fd, vidiocsync, &(frame))是阻塞的。
利用vidiocsync等待完成后,该函数成功返回则表示表明一帧采集已完成,采集到的图像数据放到内存区中,读取该内存区中的数据便可得到图像数据。
別忘了将目前frame的状态改回未被使用。
截取出来的视频数据放到了之前利用mmap()方式将device所map 的内存里,因为我们是利用mmap方式,所以会有2个(或以上)的frame,这时就要计算一下offset,才知道到底目前的视频资料被放到那裡了。
5.获得当前视频数据的地址函数实现如下,参数vd为自定义的数据结构struct_v4l_device,函数返回值为当前视频数据地址。
基地址是通过mmap 函数得到的,要区分出第0与第1帧的地址,就需将帧的偏移地址算出。
unsigned char *v4l_get_address(v4l_device *vd,int frame) {return (vd->map + vd->mbuf.offsets[frame]);}6.视频的保存对采集到的视频,系统默认保存为扩展名为.rgb24文件中,文件名是以视频画面的宽、高和保存的时间命名的。
实现的关键代码如下:sprintf(f,”./picture/%dx%d_%d_%d_%d.rgb24”,set_width ,set_height,time2.hour(),time2.minute(),time2.second());if((fp=fopen(f,”a+”))==null){perror(“open error!\\n”);return -1;}fwrite(buf,x*y*3,1,fp);fclose(fp);五、qt界面设计qt是一个多平台的c++图形用户界面应用程序框架。
它提供给应用程序开发者建立艺术级的图形用户界面所需的所用功能。
qt是完全面向对象的很容易扩展,并且允许真正地组件编程。
qt设计器是用来设计和实现用户界面并能够在多平台下使用的一种工具。
qt设计器可以使用户界面设计实验变得简单。
在任何时候你可以要求所生成的代码去重建qt设计器产生的用户界面文件,并可以根据你的喜好来改变你的设计。
根据系统功能的需要,通过使用qt提供的相关控件即可方便地设计出如图一所示的视频采集系统的运行主界面。
六、结束语作为大学生创新性实验项目,通过设计制作一个相对完整的视频数据采集系统,在学到许多实际技能的同时,也意识到自身理论的不足。
例如,视频数据的采集率还不能做的较高;尽管在开发中试图采用双线程采集,但由于受视频video4linux模块的限制,在判断是否采集结束和显示的时候,另外一帧并没有停止采集,当再次判断另外一帧时,时间就少了很多,所以双线程的方法没有明显的提高帧数。
参考文献:[1]陈俊宏.embedded linux嵌入式系统原理与实务[m].北京:中国铁道出版社,2004.184.[2]郑灵翔.嵌入式linux系统设计.北京:北京航空航天大学出版社,2008.217-222.[3](英)neil matthew, (英)richard stones著.陈健,宋健健译.linux程序设计(第三版)[m].北京:人民邮电出版社,2007.122-127.[4]qt帮助文档[eb].[5]linux的应用——video streaming探讨(5).本文系福建省大学生创新性实验计划项目编号:mjcx0805。