ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:33.45KB ,
资源ID:22777083      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22777083.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OPENCV毕业实习报告Word格式.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OPENCV毕业实习报告Word格式.docx

1、实际得分总得分备注实习表现3010按时参加实习活动,无旷课、迟到、早退等情况。遵守实习单位纪律和安排,无违反实习单位规定的情况;听从指导教师的安排,参加各项活动,无不服从教师管理的现象。按期圆满完成规定的任务,工作量饱满;能运用所学知识和技能去发现与解决实际问题,工作中有创新意识。实习报告4015实习报告文字通顺,内容翔实,论述充分、完整,结构严谨合理。能运用所学专业知识对问题加以分析。正确处理相关的数据,分析处理科学;具有收集、加工各种信息及获得新知识的能力。5实习报告字数符合相关要求,实习报告工整规范,整齐划一。实习日记(笔记)次数及内容符合要求。实习答辩在规定时间内能就实习的内容进行全面

2、完整的阐述,言简意明,重点突出,条理清晰。在规定时间内能准确、完整、流利地回答教师所提出的问题。总评成绩: 分补充说明: 指导教师: (签字)日 期: 年 月 日毕业实习答辩记录表 高强 学号: 0805090204 班级: 计科2班 答辩地点: 机电大楼417 答辩内容记录:答辩成绩答辩小组成员(签字): 年 月 日指导教师评语指导教师:一、实习目的与任务学习和掌握Intel开源计算机视觉库OpenCV的基本用法,能够利用它进行基本的图像绘制,甚至边缘检测,云检测等。二、实习地点湖北省武汉市江夏区武汉工程大学流芳校区机电大楼419机房三、实习要求和内容(一) 实习要求:1. 会安装OpenC

3、V和VC6(或者VS2005)并进行正确配置;2. 能够用OpenCV进行图像的读入、显示、创建、复制和保存等;3. 能够用OpenCV进行图像的简单绘制,比如直线、三角形、矩形、圆形、椭圆,并能够在图像中添加文本框和给图像上色;4. 能够用OpenCV进行图像的边缘检测、云检测,以及能够初步理解条形码生成技术和检测技术。(二) 实习内容:本次实习内容其实很简单,就是学习和掌握OpenCV的用法。OpenCV是Intel开源计算机视觉库,它由一系列 C 函数和少量 C+ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。要利用OpenCV进行开发,首先需要安装配置程序运行环境,下面以VS2

4、005为例介绍安装配置的方法:1. 安装VS2005和OpenCV;2. 配置Windows环境变量。检查C:Program FilesOpenCVbin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当前Windows用户(或重启)后重新登陆才生效(注意,此步骤可以省略,但如果省略的话,要记得把OpenCV的bin里的文件拷贝到VS2005所在的工程文件夹中);3. 配置VS2005。首先,打开VS2005的工具-选项-项目和解决方案-VC+目录,在库文件里面添加OpenCV的Lib库,在包含文件里面添加OpenCV的cxcoreinclude,cvinclude,cvau

5、xinclude,mlinclude,otherlibshighgui,otherlibscvcaminclude,接着在工程属性里面加入cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib等需要的库即可。配置完OpenCV后就可以开始进行开发了。首先我们需要了解图像的特点,图像有两种,灰度(黑白)图和彩色图,而不管是黑白还是彩色,都有一个色彩深度的概念,即一种颜色有多少个灰度级,一般有8位,16位,32位之分,8位即2的8次方(256)个灰度级,比如8位灰度图中的像素只有0-255个灰度级,而8位彩色图中的像素则由红绿蓝三种颜色组成,每种颜色有0-25

6、5个等级 。了解了这些之后,我们再来逐个讲解用OpenCV画图的重难点。1. 图像的读入和显示IplImage* pImg;/声明IplImage指针用来载入图像pImg = cvLoadImage( argv, 1);/利用cvLoadImage函数来载入图像,其中第一个参数为要载入的图像的地址,第二个参数为载入图像的类型(1为彩色图像)cvNamedWindow( Image, 1 );/创建窗口用来显示图像,第一个参数为窗口的标题cvShowImage( , pImg );/显示图像,第一个参数为窗口的标题,第二个参数为要显示图像的指针cvWaitKey(0); /等待按键,后面的参数为

7、等待的时间,单位为ms,为0则意为一直等到你按键为止,若改为1000则为图像显示1秒后消失 cvDestroyWindow( );/销毁窗口cvReleaseImage( &pImg ); /释放图像2. 图像的创建,保存和复制IplImage* pImg = cvCreateImage(cvGetSize(pImg),pImg-depth,pImg-nChannels);/用cvCreateImage创建图像并用pImg指向该图像,第一个参数为图像的大小,第二个参数为图像的深度,第三个参数若为1则为彩色图,3则为黑白图cvCopy(pImg, pImg2, NULL);/将pImg指针所指图

8、像复制到pImg2所指图像cvSaveImage(argv, pImg2);/把图像写入文件,arvg指新图像的地址或指针3. 图像的基本绘制CvPoint /二维坐标系下的点,类型为整型,有x、y两个int成员CV_RGB(r,g,b) /颜色函数,rgb分别为红色分量、绿色分量、蓝色分量cvLine(pImg,cvPoint(50,50),cvPoint(50,400),CV_RGB(0,0,0)/在pImg图像上画直线,直线以两点(50,50)和50,400)确定,颜色为黑色cvRectangle(pImg,pt1,pt2,CV_RGB(0,0,0),1)/在pImg图像上画矩形,矩形以

9、左上角pt1点和右下角pt2确定,颜色为黑色,最后一个参数若为-1则为填充为边框颜色的实心矩形,若为1则为空心矩形,即只有一个边框cvEllipse(pImg,pt1,cvSize(a,b),0,0,360,CV_RGB(0,0,0)/在pImg图像上画(椭)圆(弧),以pt1为圆心,ab为两个半轴长(为圆的话则ab相等),后面的三个参数分别为偏转角度0度、起始角度0度、结束角度360度,最后一个为画笔颜色CvFont x;cvInitFont(&x,CV_FONT_HERSHEY_SIMPLEX,1,1);cvPutText(pImg2, gaoq,cvPoint(200,200),&x,C

10、V_RGB(255,0,0);/先声明一个字体结构变量x,然后用cvInitFont给x初始化字体的类型和大小粗细等,最后用cvPutText函数在pImg2图像上以x的字体输出字符串gaoq,颜色为红色(红色分量为255最大,其它为0,为红色)4. 图像的边缘检测与云检测cvCanny(pDstImg,pDstImg,10,30)/边缘检测函数,云检测的基础,前两个pDstImg分别为源路径和目的路径,后面两个是阈值参数,根据情况自行设定void cvThreshold( const CvArr* src, CvArr* dst, double threshold,double max_va

11、lue, int threshold_type );/二值化函数,其参数分别为原始数组,输出数组,阈值,最大值,阈值类型,(云检测也可用for循环等知识自己形成二值化图像,然后再用边缘检测函数勾勒出边缘,由于这个比较复杂,下面给出具体的代码)#include time.h#include cv.hcxcore.hhighgui.h#pragma comment(lib,cv.lib)cxcore.libhighgui.libvoid CloudDetect(IplImage *pSrcImg, IplImage *pDstImg, int winWidth = 3, double ThAvg

12、= 0.4, double ThVar = 0.4);static void Normalization(double *data, int size, double *dst = NULL) double max = data0; double min = data0; int i; for ( i = 1; i size; i+ ) if ( max min = datai; double sub = max-min; if ( sub height; int iWidth = pSrcImg-widthStep; / 注意widthStep不是width int iChannel = p

13、SrcImg-nChannels; if ( iChannel != 1 ) BYTE *pSrcData = (BYTE*)(pSrcImg-imageData); BYTE *pDstData = (BYTE*)(pDstImg- int winSize = winWidth; double *pAvgImg = new doubleiWidth*iHeight; double *pVarImg = new doubleiWidth*iHeight; / 1.获取局部均值图,和局部方差图,并作归一化处理 for ( y = 0; y iHeight; y+ ) for ( x = 0; x

14、 iWidth; x+ ) int cx = x; int cy = y; int cnt = 0; int nx,ny; / 获取局部均值 double avg = 0; for ( ny = cy-winSize; ny cy+winSize; ny+ ) for ( nx = cx-winSize; nx cx+winSize; nx+ ) if ( nx = iWidth | ny = iHeight ) continue; avg += pSrcDatany*iWidth+nx; cnt +; if ( cnt 0 ) avg /= cnt; pAvgImgy*iWidth+x =

15、avg; / 获取局部方差 double var = 0; var += (pSrcDatany*iWidth+nx-avg)*(pSrcDatany*iWidth+nx-avg); var /= cnt; pVarImgy*iWidth+x = var; Normalization(pAvgImg,iWidth*iHeight); Normalization(pVarImg,iWidth*iHeight); / 2.对于每一个像素点,如果(均值 ThAvg & 方差 pVarImgi ThVar) ? 255 : 0; deletepAvgImg; deletepVarImg; / 边缘检测

16、 cvCanny(pDstImg,pDstImg,10,30);void main(int argc, char* argv) char *usage = Usage: CloudDetect -s srcpic -save -show -TA thresholdn, -TV threshold -ws windowsizen, -s source picture pathn -save save detected resultn -show show detected resultn -TA threshold of average,default:0.6n -TV threshold of

17、 varience,default:0.1n -ws window size,defaut:3,means:7*7nCloudDetect -s d:campuscloud.bmpn ; if (argc = 1) for (int i = 0;i9;i+) printf(usagei); char *srcPicFile = NULL; bool bSave = false; bool bShow = false; double TA = 0.6; double TV = 0.1; int ws = 3; for (int j = 1;jargc;j+) if ( strcmp( strlw

18、r(argvj),-s ) = 0 & j width; int height = pColorImg- int step = pColorImg- printf(start.n); clock_t start,end; start = GetTickCount(); CloudDetect(pSrc,pDst,ws,TA,TV); end = GetTickCount();cost: %d msn,end-start); BYTE color3 = 0,0,255; for ( int y = 0; height; y + ) for ( int x = 0; width; x + ) if

19、 ( pDst-imageDatay*pDst-widthStep+x != 0 ) memcpy(pColorImg-imageData + y*step+x*3, color, 3); if ( bSave ) cvSaveImage(savename,pColorImg); if ( bSave & bShow ) system(savename); cvReleaseImage(&pSrc);pDst);pColorImg);(附注:该程序生成的控制台程序要通过命令提示符来执行)5. OpenCV的其它应用OpenCV还有个比较重要的应用就是条形码的生成与识别。由于时间有限,周老师并不

20、要求我们掌握条形码的生成与识别,特别是相对困难的识别技术。我在私下里看了下周老师给我们留下的研究资料,发现条形码的生成确实不是很难,这里就简单说一下。国家的EAN-13条形码的生成并不难,关键是要查表。条形码一共13位,第13位是校验位,由前12位生成。首先将条形码第一位与下表1匹配,查出6个映射字母,然后取出条形码第二位到第七位,利用下表2中的AB有关项与此字母组进行匹配,查出前6位,接着把第八位到第十三位取出与表2的C有关项进行匹配,查出后六位。最后按照两部分数据绘制条形码:1对应黑线,0对应白线即可。例如,假设一个条形码的数据码为:6901038100578。首位为6,查表1对应的字母码为ABBBAA,第2-7位数字与字母码按位进行搭配结果为9A、0B、1B、0B、3A、8A,查表2得第一部分数据的编码分别为0001011、0100111、0110011、0100111、0111101、0110111;第8-13位数字与C进行搭配结果为1C、0C、0C、5C、7C、8C,查表2得第二部分数据的编码分别为1100110、1110010、1110010、1001110、1000100、1001000。表格 1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1