机器视觉矩形与圆检测资料.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
机器视觉课程设计 学 院 机电工程学院 专 业 机械设计制造及其自动化 (微电子制造专业方向) 年级班别 XXXXXXXXXXXXXXXX 学 号 XXXXXXXXXXXXX 学生姓名 XXXXXXXXX 指导教师 XXXXXXXXX 2015年1月18日 1 问题描述 1.1 基本目标 显示一张图片(包含一个矩形或一个圆),测量矩形的长宽或圆的直径。完成得及格分,扩展有加分! 1.2 基本要求 “机器视觉”考试结果要求独立在计算机上完成,建议使用Visual C++和OpenCV实现一个具有视觉捕捉、图像显示、尺寸测量等功能的对话框程序,其中必须完成对圆盘形零件圆心与直径和矩形零件长与宽尺寸测量内容。在教师提供的基本框架程序基础上,修改、补充界面和功能。 2 程序及其算法 2.1 检测与计算圆半径的程序 思路:从图片中间横扫取点得M_Point[0],M_Point[1](x坐标相加除2的圆心的x坐标)中间纵向取点得M_Point[2],M_Point[3](y坐标相加除2的圆心的y坐标) 圆上四个点到圆心的距离(半径)取平均值,输出为半径。 程序如下: double c_DialogTeclarn::f_MakeCircle(double e_dThreshold) { if(NULL==m_pIplImageSource) {return 0;} //定义变量存图像的宽,高,行像素 int q_iWidth=m_pIplImageSource-width; int q_iHeight=m_pIplImageSource-height; int q_iWidthStep=m_pIplImageSource-widthStep; uchar *q_pchDataImage=(uchar *)m_pIplImageSource-imageData; CvPoint M_Point[4]={};//存放检索出的四个点 循环检索 //01纵扫 for(int Cycle_Y=1;Cycle_Yq_iHeight;Cycle_Y++) { if(e_dThresholdq_pchDataImage[q_iWidth/2+q_iWidthStep*(Cycle_Y-1)]) { M_Point[0].x=q_iWidth/2; M_Point[0].y=Cycle_Y; } } for(int Cycle_Y=q_iHeight;Cycle_Y1;Cycle_Y--) { if(e_dThresholdq_pchDataImage[q_iWidth/2+q_iWidthStep*(Cycle_Y-1)]) { M_Point[1].x=q_iWidth/2; M_Point[1].y=Cycle_Y; } } for(int Cycle_X=1;Cycle_Xq_iWidth;Cycle_X++) { if(e_dThresholdq_pchDataImage[Cycle_X+q_iWidthStep*(q_iHeight/2-1)]) { M_Point[2].x=Cycle_X; M_Point[2].y=q_iHeight/2; } } for(int Cycle_X=q_iWidth;Cycle_X1;Cycle_X--) { if(e_dThresholdq_pchDataImage[Cycle_X+q_iWidthStep*(q_iHeight/2-1)]) { M_Point[3].x=Cycle_X; M_Point[3].y=q_iHeight/2; } } for (int i=0;i4;i++)//画边界圆 {cvCircle(m_pIplImageSource,M_Point[i],8,cvScalarAll(127),2);} int Ridius=0,clear=0; int circle_y=abs(M_Point[1].y+M_Point[0].y)/2; int circle_x=abs(M_

文档评论(0)

光光文挡 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档