基于QT的视频实时显示及图片处理课设报告_第1页
基于QT的视频实时显示及图片处理课设报告_第2页
基于QT的视频实时显示及图片处理课设报告_第3页
基于QT的视频实时显示及图片处理课设报告_第4页
基于QT的视频实时显示及图片处理课设报告_第5页
已阅读5页,还剩13页未读, 继续免费阅读

下载本文档

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

文档简介

嵌入式系统课程设计报告 湖北汽车工业学院 Hubei Automotive Industrise Institute课程设计说明书课程名称 嵌入式系统课程设计 设计题目 于QT的视频实时显示 班号 T1123-1 专业 计科 学号 学生姓名 指导教师(签字) 起至日期 2014 年 9 月 23 日 2014 年 10 月 11 日 目 录一 目的与要求 11.1 课设目的 11.2 任务概要 11.3 基本要求 1二 设计的内容 22.1 系统功能描述 22.2 开发工具 22.3 基本原理 2 2.3.1 摄像头驱动 2 2.3.2 图像处理 3三 各功能实现方案 53.1 摄像功能 53.1.1 类定义 53.1.2 类实现 53.2 图片处理 5四 测试与调试 124.1 整体性能测试 124.2 各功能测试 12总结与体会14参考文献15 - 16 - 嵌入式系统课程设计报告一、 目的与要求1.1课设目的本课程设计的目的是,通过本课程设计,提高学生的分析问题、解决问题的能力,巩固嵌入式系统的基本理论知识,进一步了解和掌握课程中所讲授的概念、方法。同时通过本课程设计,全面综合应用所学过的基础知识,建立一个完整的嵌入式系统的开发过程的概念,并掌握其中的主要原理和方法。本课程设计的目的是通过开发一个摄像头的驱动程序,使学生了解嵌入式产品开发的主要步骤,包括驱动程序的设计,从而培养学生独立完成比较复杂的实际系统设计的能力。1.2任务概要熟悉 V4L2 相关概念及编程方法;熟悉使用 Qt 与 V4L2 结合编程方法。使用QT与V4L2结合编程来开发一个摄像头的驱动实现视频实时显示功能,并实现相应的图形处理功能。1.3基本要求1)、完成摄像头驱动,实现视频的实时显示功能;2)、截取视频中的一帧,并对其进行任意图像变换,可选择拉伸、收缩、扭曲、旋转、灰度化、二值化、均值滤波、中值滤波、频域变换和直方图分析等。二 、总体设计2.1系统功能描述本系统采用QT与V4L2结合编程方法,实现的主要功能有: 1)、用外接的USB摄像设备来采取实时图像,并将其显示在开发板的LED屏幕上; 2)、通过点击LED屏幕来完成拍照(截取一帧图片),并显示图片; 3)、对照片(保存的图片)进行处理(包括放大、缩小、旋转、扭曲、灰度化、直方均衡化等)。2.2开发工具及开发环境 1)、计算机环境:XP系统,VM8.0,Linux系统(虚拟机)。2)、试验箱环境:DYV-1型嵌入式车载多媒体试验箱3)、其他工具: 串口线(连接计算机与试验箱), 罗技C270摄像头(USB接口)。4)、相关资料: 摄像头驱动程序代码(camera.tar.gz)。2.3基本原理2.3.1 摄像头驱动 1)、video4linux简介: Video4linux(简称 V4L),是 linux 中关于视频设备的内核驱动,现在已有 Video4linux2,还未加入 linux 内核,使用需自己下载补丁。在 Linux 中,视频设备是设备文件,可以像访问普通文件一样对其进行读写,摄像头在/dev/video0 下。2)、Video4linux 下视频编程的流程 打开视频设备:l 读取设备信息l 进行视频采集,两种方法: n 内存映射n 直接从设备读取l 对采集的视频进行处理l 关闭视频设备。3)、摄像功能:帧率:每秒从视频设备中读取的次数,可以自行调整。分辨率:图像像素分布的密集程度,本系统中的分辨率初始值设置为320*240.拍照:从保存视频的缓存区中取出一帧,并将其显示并保存文件格式。本系统中的图片格式为*.JPG。2.3.2 图片处理1)、旋转 将图片往预定的方向旋转任意角度。 图像的旋转涉及到坐标系的变换: X轴Y轴 X轴 Y轴 图像的输出坐标系数学坐标系旋转过程中坐标系的变换:输出坐标系-数学坐标系-旋转-输出坐标系。旋转矩阵的推导:由此可得到旋转公式:其中num1和num2是与X和Y无关的变量。2)、放大 将图片的宽和高同比放大任意倍数。放大原理:将像素对应的灰度值放在原坐标系乘以放大系数得到的新坐标系中,从而实现图片的放大。图片的放大系数越大,得到的额放大图像越大,相应的新图像单位面积内的像素点就少,所以图像放大的越大,图像越模糊。3)、缩小将图片的宽和高同比缩小任意倍数。缩小原理:与放大正好相反,略。4)、灰度化 原理:图像上的像素都是有RGB 3位整形数据组成的灰度值。RGB分别对应色光三原色中的红绿蓝,每种颜色的范围都是0255。如果图像的R、G、B都为0,则图像只有单一的黑色,如果图像的R、G、B都是255,则图像只有单一的白色,如果图像中的每一个像素都有R=G=B,则图像就是灰色的,也就是我们要得到的灰度化图像。因此,图像的灰度化只要处理图像使其R=G=B即可。5)、扭曲 原理:原理与旋转类似,都是对像素的坐标进行变换,得到一个扭曲的坐标,从而实现图片的扭曲。三、各功能的实现方案3.1摄像功能3.1.1类定义 class VideoDevice : public QObject Q_OBJECTpublic: VideoDevice(QString dev_name);/初始化视频设备 int open_device();/打开设备 int close_device();/关闭设备 int init_device();/载入设备的参数信息 int start_capturing();/开始捕获图像 int stop_capturing();/停止捕获 int uninit_device();/卸载设备 int get_frame(void *, size_t*);/获取帧 int unget_frame();/停止获取private: int init_mmap();/将信息写入内存空间 struct buffer /定义缓存空间 void * start; size_t length; ; QString dev_name; int fd; buffer* buffers; unsigned int n_buffers; int index;signals: void display_error(QString);3.1.2类实现 祥见附件源代码。3.2图片处理 1)、拍照: if(i=0) label-close(); memcpy(qq, pp, 320 * 240/*QWidget:width()*QWidget:height()*/* 3 * sizeof(char);/从视频的缓存区中提取一帧 photo-loadFromData(uchar *)qq,/*len*/320 * 240 * 3 * sizeof(char);/将提取的帧提取为Qimage形式并放在指定的空间中 photo-save(123.jpg); /将图片保存为*.jpg格式 label1-setPixmap(QPixmap:fromImage(*photo,Qt:AutoColor);/用label控件显示图片 i=1; 2)、旋转:void ProcessImage:xuanzhuan() QImage image2;定义原始图片名 image2=QImage(123.jpg).scaled(320,240);/读取图片文件 int i,j; double seita,senta;/定义角度,弧度变量 int w=320,h=240,wnew=640,hnew=480;/设置原始图片的尺寸和新图片的尺寸 double x,y,x1,y1;定义坐标变量,x,y为原坐标,x1,y1为新坐标 seita=60;/定义旋转角度 senta=3.14159/180*seita;/度数转化为弧度数 QRgb rgb00;/返回值为整形的灰度值 int r1=0,g1=0,b1=0;/灰度值 QImage SouImage;/定义新图片 SouImage=QImage(640,480,QImage:Format_RGB888);初始化新图片 for(i=0;iwnew;i+)/遍历图片像素 for(j=0;j=0&ceil(x1)=0&ceil(y1)resize(SouImage.width(),SouImage.height(); label2-setPixmap(QPixmap:fromImage(SouImage);/显示图片3)、放大oid ProcessImage:ShowSouPic() QImage image2; image2=QImage(123.jpg); double x,y,r1,r2,g1,g2,b1,b2; int i,j; QRgb rgb00,rgb01,rgb10,rgb11; int r,g,b; QImage SouImage; SouImage=QImage(320/*width*/*1.2/*width_bi*/,240/*height*/*1.2/*height_bi*/,QImage:Format_ARGB32); for(i=0;i320*1.2;i+) for(j=0;jresize(SouImage.width(),SouImage.height(); label1-setPixmap(QPixmap:fromImage(SouImage);4)、缩小 方法同放大,祥见源代码。5)、灰度化 QImage image; image =QImage(123.jpg).scaled(320,240);/读取原图像文件 int w,h; w = image.width();/获取图片尺寸 h = image.height(); QImage iGray(w,h,QImage:Format_RGB32); for(int i=0; iw; i+)/遍历图像 for(int j=0;jsetPixmap(QPixmap:fromImage(iGray);/显示6)、直方均衡化QImage image1; image1=QImage(123.jpg); QImage ImageAverage; ImageAverage=QImage(320,240,QImage:Format_RGB888); int w,h; QRgb rgb; int r255,g255,b255;/原图各个灰度数量的统计 int rtmp,gtmp,btmp,rj,gj,bj; float rPro255,gPro255,bPro255;/原图各个灰度级的概率 float rTemp255,gTemp255,bTemp255;/均衡化后各个灰度级的概率 int rJun255,gJun255,bJun255;/均衡化后对应像素的值 memset(r,0,sizeof(r); memset(g,0,sizeof(g); memset(b,0,sizeof(b); /获取原图各个灰度的数量 for(w=0;w320;w+) for(h=0;h240;h+) rgb=image1.pixel(w,h); rqRed(rgb)+; gqGreen(rgb)+; bqBlue(rgb)+; /获取原图各个灰度级的概率 for(w=0;w=255;w+) rProw=(rw*1.0)/(320*240); gProw=(gw*1.0)/(320*240); bProw=(bw*1.0)/(320*240); /均衡化后各个灰度级的概率,同时获取均衡化后对应像素的值 for(w=0;w=255;w+) if(w=0) rTemp0=rPro0; gTemp0=gPro0; bTemp0=bPro0; else rTempw=rTempw-1+rProw; gTempw=gTempw-1+gProw; bTempw=bTempw-1+bProw; rJunw=(int)(255*rTempw+0.5); gJunw=(int)(255*gTempw+0.5); bJunw=(int)(255*bTempw+0.5); for(w=0;w320;w+) for(h=0;hresize(320,240); label1-setPixmap(QPixmap:fromImage(ImageAverage); 四、测试与调试4.1 整体性能测试系统运行良好,运行过程中没有出现意外退出和程序中断等其他BUG。内存占用方面,因为没有专业的测试手段,所以无法有效评价,但是没有出现内存溢出等状况。4.2各功能测试4.2.1拍照拍照功能正常实现,能正常完成拍照与保存图片的功能。图为保存的图片: 图2.1-14.2.2灰度 能正常实现图片的灰度化处理。图为对比图,左边的为原图: 图2.2-1 图2.2-24.2.3旋转 旋转功能正常实现,并且能完成任意角度的旋转功能。图为对比图,左边的为原图: 图3.1-1 图3.1-24.2.4放大缩小 放大缩小功能实现,图片从左到右依次为原图,放大,缩小。 图4.1-3图4.1-1 图4.1-24.2.5直方均衡化 直方均衡化实现,图为效果图: 图5.1-1五、总结与体会截止今日,本次的课程设计已经结束。在这次课程设计中我学到了很多,从对V4L2的一无所知,到能够熟练的使用V4L2对摄像头进行操作;从对图像构成的一无所知,到能够熟练的用自己所学的知识对图像进行非常有意思的处理。

温馨提示

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

评论

0/150

提交评论