1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,焊缝检测程序运行演示,课程框架,课程引入,模型获取和导入,施加载荷与约束,模型简化与拆分,实践训练,交流讨论,实践训练,评价反馈,课程总结,布置作业,激学导思,讲授新知,教学巩固,教学提升,教学延伸,课程总结,及,5S,整理,5,分钟,15,分钟,15,分钟,30,分钟,15,分钟,10,分钟,课程引入,代码分析,代码演示,一,二,三,目录,能力目标,(,1,)能够对焊缝检测有基础的认识;,(,2,)能够对完成对焊缝的检测。,知
2、识目标,(,1,)了解焊缝检测的原理;,素质目标,(,1,)具有严谨求实精神;,(,2,)具有自主学习的能力;,(,3,)具备,5S,职业素养。,课程,目标,一,课程引入,焊缝是利用焊接热源的高温,将焊条和接缝处的金属熔化连接而成的缝。,焊缝检测意义:,(,1,)确保焊接结构件制造质量,提高产品的可靠性,确保其安全运行。,(2)改进焊接技术,提高产品质量。,(3)降低产品成本正确进行安全评定。,(4)由于有焊接检验的可靠保证,可促使焊接技术的更广泛应用,。,二,代码分析,形态学处理,在Opencv中对图像进行形态学处理的函数为:,cv2.morphologyEx(src,op,kernel),
3、式中:,src,传入的图片,op,进行变化的方式。Op=cv2.MORPH_OPEN 进行开运算,指的是先进行腐蚀操作,再进行膨胀操作。op=cv2.MORPH_CLOSE 进行闭运算,指的是先进行膨胀操作,再进行腐蚀操作。,Kernel,表示方框的大小,二,代码分析,轮廓提取,在Opencv中对图像进行轮廓提取的函数为:,image,contours,hierarchy=cv2.findContours(image,mode,method),式中的返回值为:,image,:与函数参数中的原始图像image一致。,contours,:返回的轮廓。,hierarchy,:图像的拓扑信息(轮廓层次
4、式中的参数为:,image,:原始图像。,mode,:轮廓检索模式。,method,:轮廓的近似方法。,二,代码分析,透视变换,在Opencv中对图像进行透视变换的函数为:,cv2.getPerspectiveTransform(src,dst),式中:,src,源图像中待测矩形的四点坐标,sdt,目标图像中矩形的四点坐标,二,代码分析,透视变换,返回由源图像中矩形到目标图像矩形变换的矩阵,得到矩阵得有用才行,所以引出下面这个函数,cv2.warpPerspective(src,M,dsize,dst,flags,borderMode,borderValue),式中:,src,输入图像,
5、M,变换矩阵,dsize,目标图像shape,flags,插值方式,interpolation方法INTER_LINEAR或INTER_NEAREST,borderMode,边界补偿方式,BORDER_CONSTANT or BORDER_REPLICATE,borderValue,边界补偿大小,常值,默认为0。,或者,cv2.perspectiveTransform(src,m,dst)dst,式中:,src,输入的2通道或者3通道的图片,m,:变换矩阵,返回的是相同size的图片,三,代码演示,def Perspective_transform(img):,width,height=400
6、350#设定长宽,#图像四个轮廓点在原图像对应的像素点,pts1=np.float32(box0+10,box1,box3-10,box2-7),#定义四个轮廓点在矫正图像中的位置,pts2=np.float32(0,0,width,0,0,height,width,height),matrix=cv2.getPerspectiveTransform(pts1,pts2)#对四点计算透视变换,imgOutput=cv2.warpPerspective(img,matrix,(width,height)#对图像透视变换,cv2.imshow(imgOutput,imgOutput),IMG=i
7、mgOutput.copy(),#cv2.imshow(IMG,IMG),return imgOutput,IMG,纠正前,纠正后,三,代码演示,Canny,算法,imgGray1=cv2.cvtColor(imgOutput,cv2.COLOR_BGR2GRAY),#cv2.imshow(Gray1,imgGray1),ret,imgBinary1=cv2.threshold(imgGray1,75,255,cv2.THRESH_BINARY),#cv2.imshow(Binary1,imgBinary1),kernel1=np.ones(3,3),np.uint8)#形态学操作,closed1=cv2.morphologyEx(imgBinary1,cv2.MORPH_CLOSE,kernel1,3),opened1=cv2.morphologyEx(closed1,cv2.MORPH_OPEN,kernel1,3),#cv2.imshow(closed1,closed1),#cv2.imshow(opened1,opened1),imgCanny1=cv2.Canny(opened1,200,200),cv2.imshow(Canny1,imgCanny1),三,代码演示,最终结果:,谢谢观看!,