【嵌入式】《基于嵌入式的家庭远程监控系统》项目总结_第1页
【嵌入式】《基于嵌入式的家庭远程监控系统》项目总结_第2页
【嵌入式】《基于嵌入式的家庭远程监控系统》项目总结_第3页
【嵌入式】《基于嵌入式的家庭远程监控系统》项目总结_第4页
【嵌入式】《基于嵌入式的家庭远程监控系统》项目总结_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于嵌入式的家庭远程监控系统项目总结 使用 v4l2 视频数据采集 一、打开设备文件,和普通文件那样打开即可 二、捕捉视频的前期准备 1、获取参数和设置要求 v4l2_capability 结构体 通过 VIDIO_QUERYCAP 操作命令获取设备驱动的参数,保存于 v4l2_capability 结构体中 ,包括 driver(驱动名),card (设备名),bus_info(总线信息)等 v4l2_cropcap 结构体 先设置 v4l2_cropcap 的 type 域,再通过 VIDIO_CROPCAP 操作命令获取设备捕捉能力的 参数,保存于 v4l2_cropcap 结构体中,包括 bounds(最大捕捉方框的左上角坐标和宽高 ),defrect(默认捕捉方框的左上角坐标和宽高)等 v4l2_format 结构体 先填好 v4l2_format 的各个域,如 type(传输流类型), fmt.pix.width(宽),fmt.pix.heigt h(高),fmt.pix.field(采样区域,如隔行采样),fmt.pix.pixelformat(采样类型,如 YUV4:2:2 ),然后通过 VIDIO_S_FMT 操作命令设置视频捕捉格式 嵌入式相关资料 2、初始化内存映射 v4l2_requestbuffers 结构体 先填好 v4l2_requestbuffers 的一些域,如 count(帧缓冲个数)等,通过操作命令 VIDIO_ REQBUFS 根据 v4l2_requestbuffers 的要求向内核申请帧缓冲 向内存申请相对应的映射空间,然后再使用 mmap()系统调用实现内核中的帧缓冲和内存 中映射空间相互映射 v4l2_buffer 结构体 由于在内核中申请帧缓存和在内存中申请映射空间不同,后者申请后返回首地址,以后可 以通过该首地址向映射空间操作,而前者没有,所以得要 v4l2_buffer 结构体做中介。先填 好 v4l2_buffer 结构体的一些域,如 index(帧号),type(传输流类型),然后通过操作 命令 VIDIO_QUERYBUF 获取相对应于帧号的缓冲帧的信息,并保存于 v4l2_buffer 结构体 中 三、捕捉视频 1、启动摄像头捕捉视频 v4l2_buf_type 枚举类型 将其设置为 V4L2_BUF_TYPE_VIDIO_CAPTURE 类型,然后使用 VIDIOC_STREAMON 操作 命令根据 v4l2_buf_type 的值开始捕捉视频 2、不断的读取数据 用 select()系统调用轮询文件描述符集合中的设备是否准备好,如果准备好,即只要从映射 空间中读取数据即可 注意:在这两个过程中,需要不断地将已经读取完数据的缓冲帧出队列,并插进到队列尾 ,以存储摄像头捕捉到的新数据 3、停止摄像头捕捉视频 和启动摄像头捕捉视频类似,只是改用 VIDIO_STREAMOFF 操作命令罢了 四、关闭设备文件,和普通文件那样关闭即可 背景: 阅读新闻 基于嵌入式的家庭远程监控系统项目总结 SDL 学习入门 日期:2012-07-14 来源:Linux 社区 作者:xuyuanfan77 字体:大 中 小 1、搭建开发平台 (1)sudo apt-get install libsdl1.2-dev 嵌入式相关资料 最基本的开发包 (2)sudo apt-get install libsdl-image1.2-dev 关于图像的开发包 (3)sudo apt-get install libsdl-mixer1.2-dev 关于音频的开发包 (4)sudo apt-get install libsdl-ttf2.0-dev 关于文字的开发包 安装好以上四个开发包,开发平台算是搭建好了 2、最有代表性的简单程序,包括图像,文字,音乐,注释如下: 1. #include 2. #include 3. #include 4. #include 5. #include 6. #include 7. 8. static SDL_Surface* screen;/SDL 窗口 9. 10. int main(int argc, char *argv) 11. 12. 13. int quit = 0; 14. SDL_Surface *text_sur;/文字容器 15. SDL_Surface *background;/图像容器 16. SDL_Event event; 17. SDL_Color color; 18. SDL_Rect srect, drect; 19. Mix_Music *bgsound; 20. TTF_Font *font; 21. 22. /初始化 SDL 23. if (SDL_Init(SDL_INIT_VIDEO|SDL_INIT_AUDIO) w; 47. srect.h = background-h; 48. drect = srect;/设置截取范围 49. SDL_BlitSurface(background, /将图像容器放入 SDL 窗口 50. 51. /*显示文字 */ 52. /初始化 TTF 53. if (TTF_Init() w; 68. srect.h = text_sur-h; 69. 70. drect.x = (600 - text_sur-w) / 2; 71. drect.y = (400 - text_sur-h) / 2; 72. drect.w = text_sur-w; 73. drect.h = text_sur-h;/设置截取范围 74. SDL_BlitSurface(text_sur, /将文字容器放入 SDL 窗口 75. 76. SDL_UpdateRect(screen, 0, 0, 600, 400);/更新 SDL 窗口,让新添加的容器显示 77. 78. /*播放声音 */ 79. Mix_OpenAudio(44100, AUDIO_S16, 2, 4096);/打开音频 80. bgsound = Mix_LoadMUS(“bgsound.mp3“);/导入声音文件 81. Mix_PlayMusic(bgsound, -1);/播放音频 82. while (quit = 0) 83. 84. while (SDL_PollEvent(/关闭音频 90. quit = 1; 91. break; 92. default: 93. break; 94. 95. 96. SDL_Delay(100); 97. 98. 99. return 0; 100. 问题:gcc main.c -o main 编译时可能会出现如下错误: 1. main.c:(.text+0x19): undefined reference to SDL_Init 2. main.c:(.text+0x22): undefined reference to SDL_GetError 3. main.c:(.text+0x50): undefined reference to SDL_Quit 4. main.c:(.text+0x79): undefined reference to SDL_SetVideoMode 5. main.c:(.text+0x8c): undefined reference to SDL_GetError 6. main.c:(.text+0xc7): undefined reference to SDL_WM_SetCaption 7. main.c:(.text+0xd3): undefined reference to IMG_Load 8. main.c:(.text+0x132): undefined reference to SDL_UpperBlit 9. main.c:(.text+0x137): undefined reference to TTF_Init 10. main.c:(.text+0x140): undefined reference to SDL_GetError 11. main.c:(.text+0x174): undefined reference to TTF_OpenFont 12. main.c:(.text+0x1a3): undefined reference to TTF_RenderText_Solid 13. main.c:(.text+0x24c): undefined reference to SDL_UpperBlit 14. main.c:(.text+0x279): undefined reference to SDL_UpdateRect 15. main.c:(.text+0x29d): undefined reference to Mix_OpenAudio 嵌入式相关资料 16. main.c:(.text+0x2a9): undefined reference to Mix_LoadMUS 17. main.c:(.text+0x2c1): undefined reference to Mix_PlayMusic 18. main.c:(.text+0x2d5): undefined reference to Mix_CloseAudio 19. main.c:(.text+0x2ec): undefined reference to SDL_PollEvent 20. main.c:(.text+0x2fc): undef

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论