LinuxGod

LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

嵌入式linux系统下开发usb摄像头图像采集系统的方法

2023年8月28日 142点热度

摘要:本文介绍了在嵌入式linux系统下开发usb摄像头图象采集系统的方式,给出了基于intelxscalepxa255处理器的嵌入式图象采集系统的设计方案,并对怎样编撰符合videoforlinux标准的摄像头图象采集程序进行了讨论。关键词:videoforlinux;usb摄像头;usb驱动序言嵌入式linux操作系统同目前广泛应用的嵌入式操作系统如psos、vxworks、wince相比,具有可移植性好、网络功能强、有优秀的gnu编译工具支持等优点。更重要的是linux的开放源代码和免费的优点促使系统成本明显减少。一流的程序设计和开发加上测试的开放性促使linux系统十分可靠和稳定,因此越来越多的人开始使用linux开发应用程序。intelxscalepxa255处理器是一款采用arm结构,面向高性能、低帧率设备的嵌入式处理器,特别适用于手持联通设备的开发。usb摄像头因具有低廉的价钱,良好的性能,及便捷使用的特点,因而很容易集成到嵌入式系统中。本文介绍的基于嵌入式linux系统的usb摄像头图象采集系统使用采用ov511芯片的webeye摄像头,在基于pxa255处理器的开发板上实现了图象的采集与压缩,利用mencoder编码工具可以将多幅jpeg图片合成avi视频流,并实现视频回放。

图1硬件系统总体框图图2linux下usb系统软件结构图3获得图象过程图4图象采集程序的流程图系统硬件平台系统结构系统硬件平台如图1所示。pxa255处理器外频最高可达400mhz,内部集成了多种外设控制模块,在实际使用时可以按照须要进行裁减。开发板上提供了64msdram、32mflash、640×480tftlcd触摸屏linux驱动下载,以及外扩的usb主口控制器等,它们构成了一个嵌入式多媒体开发平台,可以满足复杂估算和图形显示的需求。采用ov511芯片的webeye摄像头支持多种制式,cif(352×288)格式分辨率达30fps,可实现真正的实时视频捕获,vga(640×480)格式分辨率为10~15fps,具有健全的手动色温、白平衡控制,提供色调饱和度、对比度、边缘提高、伽马表等中级数码影像控制功能。它与twain标准兼容,提供640×480格式的高清晰静止图象捕获模式,具有多种视频和输出格式供选择。usb总线控制器采用cypress公司的一款专为嵌入式领域研发的usb控制芯片cy67300,该芯片可作为主口控制,也可作为从口控制芯片,内嵌有8051微控制器和ram,支持全速和高速两种模式。

车载导航应用下载_车载大屏导航应用商店_嵌入式linux在车载导航系统中的应用

jtag口用于flash的擦写,uart用于系统调试。以太网口可使现网路传输,也可作nfs调试用。系统工作过程系统通过webeye摄像头采集图象,对现场图象进行高速捕捉,之后将捕捉到的图象通过usb总线传输到pxa255处理器进行处理,并将图象压缩,保存为jpeg格式的文件。程序调用encoder编码器可以将多幅jpeg格式的图象合成一段avi视频流,实现视频回放,这在安全监控、事故鉴别、车辆防盗等领域中都有广泛应用。最后,系统还可以通过以太网口或uart口将保存的图片和视频留传到服务器上,实现网路监控。系统软件实现软件系统结构liunx系统中对usb设备的支持是通过如图2所示的结构实现的。linux内核中的usbcore为设备和主控制器提供api插口。usbcore包含所有的usb设备和主控制器的一些通用操作,为向下和向上操作提供一个插口。在linux系统中,[工业家电网-cnelc]设备驱动可分为字符设备、块设备以及网路设备。其中,字符设备面向字符i/o操作,没有缓冲,次序读取;而块设备面向数据块,所有操作都通过内核地址空间的i/o缓冲区完成,支持随机存取操作。usb设备通过快速串行通讯的形式工作,应作为字符设备来处理。

系统加载设备驱动的形式有模块加载和内核初始化加载两种:后者通过用户使用insmod命令动态加载到内核中,通过rmmod命令卸载驱动模块;前者是把驱动编进内核,在内核初始化时手动加载。usb主口程序由hcd(主机控制器驱动)、usbd(usb驱动程序)以及顾客程序组成。其中usbd负责管理所有hcd、设备驱动和所有联接到usb总线上的设备,是usb主机软件的核心。如图2所示,linux系统中usb子系统采用分层结构,其中usbd和hcd提供了支持设备驱动程序开发的api。usb设备驱动程序不是通过i/o操作访问设备,而是通过usbcore提供的标准插口与设备交互,它采用由管线组成的通道与设备进行通讯。设备驱动程序按照usbd创建所需的管线,并为其分配传输所需的缓冲空间。usb的传输分为控制传输、中断传输、批量传输以及等时传输四种模式。对于时间性极强而且确切性不高的视频捕捉应拿来说,摄像头应采用等时传输模式。linux系统中,任何usb传输都须要通过urb(usb恳求块)来实现。为了尽可能快地得到图象数据,须要加强urb的缓冲linux系统,这样可以减少每位usb事务中握手信息所占的比列,增强有效数据传输比列。

因为每次usb传输都要包括urb的完善、发送、回收、数据整理,而在这种阶段中不形成有效数据嵌入式linux在车载导航系统中的应用,因而可构建两个urb交替工作,一个urb在等待回收时初始化另一个urb。获得图象的过程如图3所示。摄像头视频捕获程序的编撰摄像头属于视频类设备,遵守的标准为videoforlinux(v4l)标准。这个标准定义了一套api插口,内核、驱动、应用程序都以这个插口为标准进行交流。目前的v4l囊括了音视频捕捉及处理等内容,也包括usb摄像头。linux系统中通常的文件操作是通过read、write等系统调用完成,但这种系统调用是通过内核态与用户态之间互相进行数据拷贝实现的。对于图象数据来说,进行拷贝必然会降低时间开支,因而须要使用显存映射的办法来加以解决。首先应申请足够大的内核态显存作为图象数据缓存,将urb带来的数据暂存;之后将其用remap_page_range函数映射到用户态空间。这样,用户态空间的图象处理程序就可以使用mmap()函数,直接读写内核态帧缓冲区嵌入式linux在车载导航系统中的应用,减轻了额外开支。要进行视频捕捉必须用到vidiocmcapture和vidiocsync这两个ioctl函数。vidiocgmbuf包含有所用缓冲器的设置与地址。

vidiocmcapture用于开始捕捉;vidiocsync用于等待捕捉完成。为推动数据处理速率,通常使用双缓冲设置,即buffer0捕捉数据时,buffer1传输数据;buffer1捕捉数据时,buffer0传输数据。整个图象采集程序的流程图如图4所示。将采集到的图象保存为jpeg格式,之后调用mplayer中的mencoder编码器,即可将多幅jpeg文件合成一段视频流,实现视频回放。结语本文在台式机上编程实现了基于linux系统的usb摄像头图象采集系统。系统可以实现每秒30帧的图象采集,可以直接连续显示到屏幕上构成实时监控系统,也可压缩为一段视频流,用播放器播放下来。通过交叉编译将程序移植到pxa255开发板上,实现了预期功能。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 传输 图像 摄像 视频 采集
最后更新:2023年8月28日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
Linux文件系统种类 如何卸载用源码包安装的软件?在线视频教程推荐 「职位」ASP.、PHP、Linux服务器集群开发 Torvalds:Linux内核开发的创新前景充满了热情 Linux文件系统的结构从终端窗口探索Linux目录树结构 卸载软件命令Linux.You linux软件开发如何入门?学习Linux步骤及学习方法介绍 14年Linux发行版的有趣历史观点 Linux中不像Windows可以直接在控制面板中卸载? 2018年波及众多Linux发行版的性能对比会更加深入 如何用源码包安装的软件?name的方法总结 Linux之父李纳斯托瓦兹开发的Linux只是一个内核 Linux系统中的apt和apt-get的区别及解决办法! Linux系统发行版的一种方法,除此以外 MacM1上安装Docker和CentOS,您需要遵循的步骤 linux光驱启动怎么设置 常见的几种设置方法,你知道几个? 关于ESXi主机磁盘空间回收的具体操作步骤及步骤 Linux设置显示中文和设置字体设置中文一个都不能少 如何在Linux系统中使用命令查看Linux发行版版本信息 电脑的系统出现问题需要修复时光驱,两种设置方法
嵌入式Linux操作系统学习规划+LINUX路线,主攻江苏电信天翼校园客户端故障指引及解决办法(101)英特尔GMAGMA950显卡驱动程序/WIN8/8.1电信校园网宽带用USB数据线共享给电脑无线上网国防科大开源操作系统:它只是一个吉祥的象征10个常用Linux文本查看命令及其详细说明和使用示例Linux嵌入式系统内核裁剪与定制方法的介绍情况淘宝教育热卖C语言编程开发C++程序设计零基础入门课程从CPU、内存、硬盘、显卡等这些方面安装Linux系统的最低配置Linux通过chkconfig设置开机启动服务创建的几种常见方式(技术分析)Linux多线程的使用与操作系统的区别通常rar命令由一个主命令加若干选项(可选)构成RedHatLinux中自动运行程序中的应用linux 读写文件 关于Linux内核的神秘面纱,你知道几个?使用wget实用程序的有用命令行工具的使用怎么设置linux开机项自启动?方式是怎样的?嵌入式Linux应用层与驱动层要想学习关于Linux内核的交叉编译步骤和方法:步骤、方法STM32嵌入式linux开发流程及应用程序分析-STMlinux下有哪些文件在介绍lsof命令实用用法介绍?
获取linux系统CPU、内存、磁盘IO等信息 嵌入式开发:10年+经验总结 如何把Linux操作系统放在大型服务器上运行Linux系统 docker-compose用镜像解决PaaS标准化的问题,你还能调试吗? 阿里云轻量级应用服务器配置远程服务器配置 如何在Linux系统中实现开机自启动呢? 网易云音乐2021旧版本:听歌必备小神器,多种热门音乐提供给你 Linux系统默认的根目录结构和文件参数实例target作为 在多用户多任务中对每个用户运行环境的设置十分重要 Linux软件安装查询 linux解压gz文件命令 蓝易云香港五网CN2网络压缩比率的测试环境 掌握Linux下载文件命令技巧,轻松高效获取所需资料 CentOS设置IP地址实用技巧及注意事项,轻松掌握正确设置方法 (Unix)Unix时间戳转换公式及Unix操作成时间公式 linux 创建链接文件 Linux链接分两种,一种被称为硬链接(SymbolicLink) 如何吸引厂商开发更多更丰富的Linux软件问题 Shell用C语言编写的程序-Shell教程脚本 局域网聊天软件简单介绍TOP1内网通传书 RedHatLinux发行版套件管理方式的作用及管理方法 嵌入式Linux应用开发完全手册代码2.能写简单汇编代码
标签聚合
linux服务器 内核 应用 操作 命令 文件目录 文件 软件 虚拟机 linux系统
书籍
课程
技术群
技术干货大合集↓
  • 2023年9月 / 69篇
  • 2023年8月 / 93篇
  • 2023年7月 / 94篇
  • 2023年6月 / 90篇
  • 2023年5月 / 93篇
  • 2023年4月 / 90篇
  • 2023年3月 / 129篇
  • 2023年2月 / 84篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇
友情链接:

Linux书籍 | Linux命令 | Linux系统 | RHCE红帽认证 | Linux软件 | Linux教程 | CentOS系统 | Linux内核 | Linux服务器 | Linux大神 | IT资源

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.