机器视觉课程设计

上传人:小** 文档编号:91132821 上传时间:2019-06-26 格式:DOC 页数:13 大小:392.50KB
返回 下载 相关 举报
机器视觉课程设计_第1页
第1页 / 共13页
机器视觉课程设计_第2页
第2页 / 共13页
机器视觉课程设计_第3页
第3页 / 共13页
机器视觉课程设计_第4页
第4页 / 共13页
机器视觉课程设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《机器视觉课程设计》由会员分享,可在线阅读,更多相关《机器视觉课程设计(13页珍藏版)》请在金锄头文库上搜索。

1、机器视觉课程设计对圆盘形零件圆心与直径和矩形零件长与宽尺寸测量 学生学院 机电学院 专业班级 学 号 学生姓名 指导教师 2015年 1 月 20 日13目 录1 问题描述5 1.1 基本目标5 1.2 基本要求52 程序及其算法5 2.1 检测与计算圆半径的程序5 2.2 检测与计算矩形长和宽的程序82.2.1 打开摄像头程序82.2.2 保存拍摄的照片程序92.2.3 读取拍摄到的图片(读取文名字CurrentImage.jpg的图片)92.2.4 检测边上的点和计算长和高的函数92.2.5 老师写的显示图片的函数133 运行结果144 小结151 问题描述1.1 基本目标 显示一张图片(

2、包含一个矩形或一个圆),测量矩形的长宽或圆的直径。完成得及格分,扩展有加分!要求图片1.2 基本要求 “机器视觉”考试结果要求独立在计算机上完成,建议使用Visual C+和OpenCV实现一个具有视觉捕捉、图像显示、尺寸测量等功能的对话框程序,其中必须完成对圆盘形零件圆心与直径和矩形零件长与宽尺寸测量内容。在教师提供的基本框架程序基础上,修改、补充界面和功能。2 程序及其算法2.1 检测与计算圆半径的程序 思路:从图片中间横扫取点得M_Point0,M_Point1(x坐标相加除2的圆心的x坐标)中间纵向取点得M_Point2,M_Point3(y坐标相加除2的圆心的y坐标)圆上四个点到圆心

3、的距离(半径)取平均值,输出为半径。显示图片程序如下: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_pIplImageSou

4、rce-imageData;CvPoint M_Point4=;/存放检索出的四个点 循环检索/01纵扫for(int Cycle_Y=1;Cycle_Yq_pchDataImageq_iWidth/2+q_iWidthStep*(Cycle_Y-1)M_Point0.x=q_iWidth/2;M_Point0.y=Cycle_Y;for(int Cycle_Y=q_iHeight;Cycle_Y1;Cycle_Y-)if(e_dThresholdq_pchDataImageq_iWidth/2+q_iWidthStep*(Cycle_Y-1)M_Point1.x=q_iWidth/2;M_P

5、oint1.y=Cycle_Y;for(int Cycle_X=1;Cycle_Xq_pchDataImageCycle_X+q_iWidthStep*(q_iHeight/2-1)M_Point2.x=Cycle_X;M_Point2.y=q_iHeight/2;for(int Cycle_X=q_iWidth;Cycle_X1;Cycle_X-)if(e_dThresholdq_pchDataImageCycle_X+q_iWidthStep*(q_iHeight/2-1)M_Point3.x=Cycle_X;M_Point3.y=q_iHeight/2;for (int i=0;i4;i

6、+)/画边界圆cvCircle(m_pIplImageSource,M_Pointi,8,cvScalarAll(127),2);int Ridius=0,clear=0;int circle_y=abs(M_Point1.y+M_Point0.y)/2;int circle_x=abs(M_Point3.x+M_Point2.x)/2;float c=0,j=0;for (int i=0;iGetDlgItem(ID_PICTURE_DISPLAY);f_ControlShowImage(m_pIplImageDisplay,e_pCWndPicture,m_pIplImageSource)

7、;cvSaveImage(_T(./Result_Image.jpg),m_pIplImageSource);return 0;2.2 检测与计算矩形长和宽的程序 思路:这个程序主要包括:打开摄像头-保存图片(拍照)-加载刚刚保存的图片-找出点并计算长和高 四个按钮,每一个按钮包含下面的一段代码,拍摄的图片保存为CurrentImage.jpg,这里事先保存了一张同名的图片,所以可以直接点击Load Image读取。 2.2.1 打开摄像头程序void c_DialogTeclarn:OnBnClickedButtonOpenCamera() CvCapture *q_pCvCapture=c

8、vCreateCameraCapture(0); if(NULL=q_pCvCapture) return; IplImage *q_pIplImageCapture=cvQueryFrame(q_pCvCapture); if(NULL=q_pIplImageCapture) return; if(NULL!=m_pIplImageSource) cvReleaseImage(&m_pIplImageSource); m_pIplImageSource=NULL; m_pIplImageSource=cvCloneImage(q_pIplImageCapture); cvReleaseCap

9、ture(&q_pCvCapture); CWnd *e_pCWndPicture=this-GetDlgItem(ID_PICTURE_DISPLAY); f_ControlShowImage(m_pIplImageDisplay,e_pCWndPicture,m_pIplImageSource);注:绿色的为检测是否成功打开摄像头,蓝色的是读取摄像头拍摄的图片到内存,后面的语句是让图片在mfc窗口显示出来。 2.2.2 保存拍摄的照片程序void c_DialogTeclarn:OnBnClickedButtonSaveImage() / TODO: 在此添加控件通知处理程序代码 cvSa

10、veImage(_T(./CurrentImage.jpg),m_pIplImageSource); 2.2.3 读取拍摄到的图片(读取文名字CurrentImage.jpg的图片)void c_DialogTeclarn:OnBnClickedButtonLoadImage()/ TODO: 在此添加控件通知处理程序代码if(NULL!=m_pIplImageSource)cvReleaseImage(&m_pIplImageSource);m_pIplImageSource=NULL;m_pIplImageSource=cvLoadImage(_T(./CurrentImage.jpg),

11、0);CWnd *e_pCWndPicture=this-GetDlgItem(ID_PICTURE_DISPLAY);f_ControlShowImage(m_pIplImageDisplay,e_pCWndPicture,m_pIplImageSource); 2.2.4 检测边上的点和计算长和高的函数思路是:第一步找到边上的点,设定一个变量e_dThreshold值为127,通过循环让它与每一个像素的像素值进行比较。如果检测到一个点的像素值比127小,则这个点可能就是需要的点(黑色=0,白色=255)如果每个像素都要比较运算太多,所以上边两个点的检测是沿着图片长的的2/5分处和3/5分处

12、向下检测,下边的点是沿着1/2处向上检测。第二步是用找到6个点的坐标算出三角形的面积,然后除以底边边长得到高。求三角形的面积用的是行列式 的值等于三角形面积的2倍程序如下:double c_DialogTeclarn:f_MakeRectangleWidth(double e_dThreshold) / TODO: 在此添加控件通知处理程序代码/定义一些点和变量 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; int q_iXLeftTop=2*q_iWidth/5; int q_iXRightT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号