1 / 15
文档名称:

机器视觉课程设计报告.doc

格式:doc   大小:391KB   页数:15页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

机器视觉课程设计报告.doc

上传人:2286107238 2019/7/27 文件大小:391 KB

下载得到文件列表

机器视觉课程设计报告.doc

文档介绍

文档介绍:机器视觉课程设计对圆盘形零件圆心与直径和矩形零件长与宽尺寸测量学生学院机电学院专业班级学号学生姓名指导教师2015年1月20日目录1问题描述 52程序及其算法 () 133运行结果 144小结 (包含一个矩形或一个圆),测量矩形的长宽或圆的直径。完成得及格分,扩展有加分!“机器视觉”考试结果要求独立在计算机上完成,建议使用VisualC++和OpenCV实现一个具有视觉捕捉、图像显示、尺寸测量等功能的对话框程序,其中必须完成对圆盘形零件圆心与直径和矩形零件长与宽尺寸测量内容。在教师提供的基本框架程序基础上,修改、补充界面和功能。:从图片中间横扫取点得M_Point[0],M_Point[1](x坐标相加除2的圆心的x坐标)中间纵向取点得M_Point[2],M_Point[3](y坐标相加除2的圆心的y坐标)圆上四个点到圆心的距离(半径)取平均值,输出为半径。显示图片程序如下:doublec_DialogTeclarn::f_MakeCircle(doublee_dThreshold){ if(NULL==m_pIplImageSource) {return0;} //定义变量存图像的宽,高,行像素 intq_iWidth=m_pIplImageSource->width; intq_iHeight=m_pIplImageSource->height; intq_iWidthStep=m_pIplImageSource->widthStep; uchar*q_pchDataImage=(uchar*)m_pIplImageSource->imageData; CvPointM_Point[4]={};//存放检索出的四个点循环检索 //01纵扫 for(intCycle_Y=1;Cycle_Y<q_iHeight;Cycle_Y++) { if(e_dThreshold>q_pchDataImage[q_iWidth/2+q_iWidthStep*(Cycle_Y-1)]) { M_Point[0].x=q_iWidth/2; M_Point[0].y=Cycle_Y; } } for(intCycle_Y=q_iHeight;Cycle_Y>1;Cycle_Y--) { if(e_dThreshold>q_pchDataImage[q_iWidth/2+q_iWidthStep*(Cycle_Y-1)]) { M_Point[1].x=q_iWidth/2; M_Point[1].y=Cycle_Y; } } for(intCycle_X=1;Cycle_X<q_iWidth;Cycle_X++) { if(e_dThreshold>q_pchDataImage[Cycle_X+q_iWidthStep*(q_iHeight/2-1)]) { M_Point[2].x=Cycle_X; M_Point[2].y=q_iHeight/2; } } for(intCycle_X=q_iWidth;Cycle_X>1;Cycle_X--) { if(e_dThreshold>q_pchDataImage[Cycle_X+q_iWidthStep*(q_iHeight/2-1)]) { M_Point[3].x=Cycle_X; M_Point[3].y=q_iHeight/2; } } for(inti=0;i<4;i++)//画边界圆 {cvCircle(m_pIplImageSource,M_Point[i],8,cvScalarAll(127),2);} intRidius=0,clear=0; intcircle_y=abs(M_Point[1].y+M_Point[0].y)/2; intcircle_x=abs(M_Point[3].x+M_Point[2].x)/2; floatc=0,j=0; for(inti=0;i<4;i++) { j=(M_Point[i].x-circle_x)*(M_Point[i].x-circle_x)+(M_Point[i].y-circle_y)*(M_Point[i].y-circle_y); c=c+sqrt(j); } Ridius=c/4; //在窗口