毕业设计图像采集系统答辩PPT课件
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
回收资源/退出
N 发送
Y 发送一帧图像
结束
客户端的程序
开始
打开客户端套接字 open_clientsock()
分配图像帧内存空间
连接服务器端获取图像 帧readjpeg()
初始化屏幕 SDL_SetVideoMode ()
设置窗口标题 SDL_WM_SetCaption ()
刷新屏幕SDL_Flip( )
第11页/共20页
内存映射或 直接读取
获取视频数据 否
采集完成 是
关闭摄像头
结束
服务器端程序
• 基于V4L数据采集程序实现
⑴设备的开启 ⑵设备信息获取:VIDIOCGCAP ⑶图像信息的获取/设置:VIDIOCGPICT/ VIDIOCSPICT ⑸采集缓冲区内存映射:VIDIOGMBUF ⑹对视频帧数的捕捉:VIDIOCMCAPTURE/VIDIOCSYNC ⑺设备的关闭 主要用到的函数:open(),ioctl(),mmap(),close()
论文框架
1 研究背景 2 开发环境 3 课题的主要工作 4 结论
第1页/共20页
研究背景
1)课题研究背景
交通
工地
图像视频 监控系统 应用领域
治安
银行
第2页/共20页
研究背景
2)视频监控系统发展概况
模拟视频监控系统 数字化本地视频监控系统 远程视频监控系统
20世纪90年代前, 主要是以模拟设备 为主的闭路电视监 控系统,称为第一 代。
20世纪90年代中期, 随着科技的发展,人 们利用计算机的高速 数据处理能力进行视 频的采集和处理,这 种基于PC机的多媒体 主控台系统称为第二 代数字化本地视频监 控系统。
20世纪90年代末, 随着网络带宽、计 算机处理能力和存 储容量的快速提高, 视频监控步入了全 数字化的网络时代, 称为第三代远程视 频监控系统。
一个线程是服务器端通过套接字程序和客户端通信,将图像数据发送出去。 • ⑷linux客户端pc的程序编写。在客户端利用通信套接字接收图像帧,并且使用SDL库让图像显示出来。
第18页/共20页
谢谢!
第19页/共20页
感谢您的观看。
Company Logo
第20页/共20页
第7页/共20页
移植工作
• gspca USB驱动的移植
第8页/共20页
移植工作
• 内核配置和裁剪,生产内核的 zImage文件
第9页/共20页
移植工作
Company Logo
第10页/共20页
服务器端程序
• 基于V4L数据采集程序
开始 加载驱动 打开摄像头 读取设备信息 设置设备信息 选择采集方式
否 停止获取图像 (ctrl c键) 是 释放内存 关闭套接字
结束
第16页/共20页
结果显示
第17页/共20页
结论
• ⑴熟悉linux系统和配置编程环境,linux和windows在pc应用程序的编程上区别不大,但是嵌入式的编程 大大不同,在宿主机上需要做很多配置工作。
• ⑵对linux下usb驱动进行移植,对linux内核的进行裁剪和配置 • ⑶对服务器端的采集和发送程序的编写。本部分主要利用V4L API完成了视频图像采集程序线程,并启动另
第14页/共20页
服务器端总体程序
创建线程一,用于采集图像,grap() 为采集图像的函数
创建线程二,用于发送图像,service()
为发送图像的函数
采 集
线
利用互斥的方法协调两
程
个线程
采集一帧图像
N 结束
Y
第15页/共20页
开始
初始化/打开设备
建立套接字,监听等待
与客户端建立连接
发送线程
分析客户请求
• 交叉编译相关工具
版本的arm gcc交叉编译工具
• Linux shell终端
主要运行程序,并用minicom和开发板通信
• KD发环境,主要 编写数据采集程序,服务器端发送程序以及客户端接收显示程序
• SDL
图形显示库,用于图像的显示
第3页/共20页
开发平台
第4页/共20页
第5页/共20页
毕业设计主要工作
• Linux交叉编译环境的配置 • Linux下usb驱动进行移植 • Linux内核的进行裁剪和配置 • 服务器端的采集程序 • 服务器/客户端的网络发送、接收程序 • 客户端pc的图像显示程序
第6页/共20页
开发环境
第12页/共20页
Linux网络编程
• 客户端和服务器端的通信
第13页/共20页
服务器端程序
C/S架构的发送和接收函数公共接口: int open_sock(int port); int open_clientsock(char * address, int port); int read_sock(int sockhandle, unsigned char* buf, int length); int write_sock(int sockhandle, unsigned char* buf, int length); void close_sock(int sockhandle); int reportip( char *src, char *ip, unsigned short *port);