版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于嵌入式的家庭远程监控系统项目总结使用v4i2视频数据采集一、打开设备文件,和普通文件那样打开即可二、捕捉视频的前期准备1、获取参数和设置要求v4l2_capability 结构体通过vidio_querycap操作命令获取设备驱动的参数,保存于v4l2_capability结构体中, 包括driver (驱动名),card (设备名),busjnfo (总线信息)等v4l2_cropc即结构体先设置v4l2_cropcap的type域,再通过vi dio_cropcap操作命令获取设备捕捉能力的参 数,保存t v4l2_cropcap结构体中,包括bounds (最大捕捉方框的左上角坐标和
2、宽高), defrect (默认捕捉方框的左上角坐标和宽高)等v4l2_format 结构体先填好 v4l2_format 的各个域,如 type (传输流类型),fmt.pix.width(宽),fmt.pix.heigth (高),fmt.pix.field(采样区域,如隔行采样),fmt.pix.pixelformat(采样类型,如 yuv4:2:2), 然后通过vidio_s_fmt操作命令设置视频捕捉格式2、初始化内存映射v4i2equestbuffers 结构体先填好v4i2equestbuffers的一些域,如count (帧缓冲个数)等,通过操作命令vidi0 reqbufs根
3、据v4l2_requestbuffers的要求向内核申请帧缓冲向内存申请相对炖的映射空间,然后再使用mmap()系统调用实现内核中的帧缓冲和内存中 映射空间相互映射v4l2_buffer 结构体 由于在内核屮申请帧缓存和在内存屮申请映射空间不同,后者申请后返冋首地址,以肩可以 通过该首地址向映射空间操作,而前者没有,所以得要v4l2_buffer结构体做屮介。先填好 v4l2_buffer结构体的些域,如index (帧号),type (传输流类型),然后通过操作命令 vidio_querybuf获取相对应于帧号的缓冲帧的信息,并保存j; v4l2_buffer结构体中丄、捕捉视频仁启动摄像头
4、捕捉视频v4l2_buf_type 枚举类型将其设置为 v4l2_builtype_vi dio_capture 类型,然示使用 vidioclstreamon 操作 命令根据v4l2_buf_type的值开始捕捉视频2、不断的读取数据用select。系统调用轮询文件描述符集合中的设备是否准备好,如果准备好,即只要从映射 空间中读取数据即可注意:在这两个过程中,需要不断地将己经读取完数据的缓冲帧岀队列,并插进到队列尾, 以存储摄像头捕捉到的新数据3、停止摄像头捕捉视频和启动摄像头捕捉视频类似,只是改用vidio_streamoff操作命令罢了四、关闭设备文件,和普通文件那样关闭即可背景:阅读新
5、闻基于嵌入式的家庭远程监控系统项目总结sdl学习入门日期:2012-07-14来源:linux社区 作者:xuyuanfan77字体:犬中小1、搭建开发平台(1) sudo apt-get install iibsdl1.2-dev最皋木的开发包(2) sudo apt-get install iibsdl-image1.2-dev关于图像的开发包(3) sudo apt-get install libsdl-mixer 1.2-dev关于音频的开发包(4) sudo apt-get install libsdl-ttf2.0-dev关于文字的开发包安装好以上四个开发包,开发平台算是搭建好了2
6、、最有代表性的简单程序,包拾图像,文字,音乐,注释如下:1.# include <stdio.h>2.# include <stdlib.h>3.# include <sdl7sdlh>4.#include <sdusdl_image.h>5.# include <sdusdujnixer.h6.# include <sdusdl_ttf.h>7.8.static sdl_surface* screen;/sdl 窗口9.10.int main(int argc, char *argv)11.12.13.int quit = 0
7、;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.ttffont *font;21.22./初始化sdl23.if (sdl_i nit(sdl_l nl t_vi deo| | sdl_i nlt_audi 0) < 0)24.25.fprintf(stderr, nsdl init error:%sn", sd
8、l_geterror();26.exit(o);27.28.atexit(sdl_quit);注册退出时调用的操作29.30.31.设置sdl屏幕大小32. screen = sdl setvideomode(600, 400, 24, sdl hwsurface);33. if (screen = null)34. 35. fprintf(stderr, "set video mode failure:%sn", sdl_getbror();36. exit(o);37. 38.38. 设置sdl窗口标题39. sdl_wm_setcaption(,test,j null
9、);41.40. 广显示图像*/41. background = imgload("background.jpg");/导入图像文件,并将图像放入文字容器42. srect.x=0;43. srect.y=0;44. srect.w=backgrounds w;45. srect.h=backgrounds h;46. drect = srect;/设置截取范围47. sdl blitsurface(background, &srect, screen, &drect);/将图像容器放入 sdl 窗口50.48. 广显示文字*/49. 初始化ttf50. i
10、f (ttf_lnit() < 0)51. 52. fprintf(stderr, "ttf init error:%snh, sdl_geterror();53. return;54. 58.55. font = tnlopenr)nt(”test.ttf”,40);/导入字体文件56. color, r =255;57. color.g =0;58. color, b =0;/设置文字颜色59. text_sur = ttf_rendertext_solid(font, "hello, welcome to game!", color);/将文7放入文字
11、 容器64.60. srect.x=0;61. srect.y=0;62. srect.w=textsur->w;63. srect.h=text_sur->h;69.64. drect.x = (600 text_sur->w) / 2;65. drect.y = (400 text_sur->h) / 2;66. drect.w = text sur->w;67. drect. h = text_sur->h; 设置截収范围68. sdl_blitsurface(text_sur, &srect, screen, &drect);/将文字
12、容器放入 sdl窗口7576. sdl_updaterect(screen, 0, 0, 600, 400);/更新 sdl 窗【1,让新添加的容器显示77.77. 广播放声音*/78. mix_openaudio(44100, audio_s16, 2, 4096);/打开音频79. bgsound = mix_loadmus("bgsound.mp3");/ 导入声音文件80. mix_playmusic(bgsound,1);播放音频81. while (quit = 0)82. 83. while (sdl_fbllevent(&event)84. 85.
13、switch (event.type)86. 87. case sdl_quit:88. mix_aoseaudio(); 关闭音频90quit = 1;91 break;92. default:93. break;94. 95. 96. sdl_delay(100);97. 98.98. return 0;99. 问题:gcc main.c -o main编译时可能会出现如下错決1. main.c:(.text+0x19): undefined reference to ' sdl i nit*2. main.c:(.text+0x22): undefi ned ref ere ne
14、e to ' sdl get error*3. main .c:(text+0x50): undefi ned ref ere nee to、sdl_quit*4. mainc:(text+0x79): undefined reference to、sdl_setvideomode'5. main .c:(.text+0x8c): un defined ref ere nee to、sdlget error*6. mainc:(.text+0xc7): undefined reference to、sdl_wm_setcaptionr7. main .c:(.text+0xd3
15、): un defined ref ere nee to x img load*8. main.c:(.text+ 0x132): undefined reference to ' sdl upperblit'9. main.c:(.text+ 0x137): undefined reference to、ttf_lnif10. main.c:(.text+0x140): undefined reference to、sdl_geterror'11. main.c:(.text+0x174): undefined reference to ' ttf_openf
16、onf12. main.c:(.text+0x1a3): undefined reference to ' ttf_rendertext_solict13. main.c:(.text+0x24c): undefined reference to、sdl upperblit*14. main.c:(.text+0x279): undefined reference to、sdl updaterect115. main.c:(.text+0x29d): undefined reference to、mix_openaudiof16. main.c:(.text+0x2a9): undefined reference to、mix loadmus17. main.c:(.text+0x2c1): undefined reference to、mix_raymusic18. main.c:(.text+ 0x2d5): undefined reference to、mix_aoseaudior19. main.c:(.text+0x2ec): undefined
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 锅炉招标投标合同
- 房屋买卖合同样式分享
- 变压器招标文件与合同的条款解读
- 钢管架施工要点
- 数码打印机购买合同
- 实习生与单位间的实习协议
- 电梯维修养护招标
- 专业法律培训合同
- 招标文件的组成要素详解与分析
- 茶楼茶叶品牌授权合同
- 社会工作者考试题库及答案
- 重庆市2023-2024学年九年级上学期11月期中物理试题
- 2024年中邮保险公司招聘笔试参考题库含答案解析
- 中学生安全教育主题班会课件
- 外科(整形外科方向)住院医师规范化培训基地标准细则
- 产品包装外观检查验收标准
- 集合与常用逻辑用语-大单元作业设计
- 客车转向架-系列客车转向架(车辆构造检修课件)
- 护理职业生涯人物访谈报告
- 餐饮连锁品牌授权书
- 护理人力资源配置中的护患比配置
评论
0/150
提交评论