【A5】基于Python+OpenCV瓶口缺陷检测

2022-07-11 19:34:20      索炜达电子      706     

文件编号:A5

文件大小:8M

开发环境:Python3.8、OpenCV4.6、Pycharm2020

猿创承诺:该项目亲测正常运行,需远程调试部署需另外收费,确保正常使用,不能正常使用全额退款。

简要概述:基于Python+OpenCV瓶口缺陷检测

主要任务:判断瓶口是否完好,寻找瓶口缺陷部分,并将其框出(以下图为例进行演示)(包含程序部分代码)

【A5】基于Python+OpenCV瓶口缺陷检测

解决步骤:

-通过Hough圆检测,获取瓶口外侧圆,确定圆的位置和尺寸,对瓶口部分进行极坐标变化和极坐标反变换,消除瓶口外侧区域的干扰。

-对之后的图像进行处理,提取缺陷部分进行轮廓绘制和缺陷判别。

1、导入功能包,读取图像

2、Hough圆检测获取瓶口位置和大小

为了防止误判,对圆半径进行限制,保证获得瓶口最外侧的轮廓./bottle_create.py 对框中瓶子进行检查

****************************************************************************************************

'''hough圆变换'''

cimg = cv2.cvtColor(bottle,cv2.COLOR_GRAY2BGR)  # 转换成彩色图

circles = cv2.HoughCircles(median,cv2.HOUGH_GRADIENT,1,100,

                         param1=100,param2=60,minRadius=150,maxRadius=160)  # Hough圆检测

circles = np.uint16(np.around(circles))

#print(circles)

for i in circles[0,:]:    # 遍历circles,i为列表,i中包含多个列表,列表为[x,y,r]圆心坐标和半径

    # draw the outer circle

    cv2.circle(cimg,(i[0],i[1]),i[2],(0,255,0),2)

    # draw the center of the circle

    cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)

#cv_show( 'cimg',cimg)

****************************************************************************************************

【A5】基于Python+OpenCV瓶口缺陷检测

3、极坐标变化与反变换

为了消除瓶口外侧部分带来的干扰。进行极坐标变换,将极坐标中心设为圆心,极半径为圆半径;进行反变化,将瓶口放在原图大小的原位置

****************************************************************************************************

'''极坐标变换'''

polarImg = cv2.warpPolar(bottle,(300,900),center,radius,

                         cv2.INTER_LINEAR + cv2.WARP_POLAR_LINEAR)

#cv_show('polarImg',polarImg)

'''反变换'''

b_bottle=cv2.warpPolar(polarImg,psp, center,radius,

                       cv2.INTER_LINEAR + cv2.WARP_POLAR_LINEAR + cv2.WARP_INVERSE_MAP)

#cv_show('b_bottle',b_bottle)

****************************************************************************************************

【A5】基于Python+OpenCV瓶口缺陷检测

【A5】基于Python+OpenCV瓶口缺陷检测

4、图像处理

通过均值滤波消除干扰,阈值变换检测瓶口的亮点,由于出现小白点的干扰,进行开运算处理,再进行膨胀,将缺陷区域联通

【A5】基于Python+OpenCV瓶口缺陷检测

5、轮廓检测和缺陷判断

寻找上图的外接轮廓,遍历这些轮廓,判断是否在瓶口处,并将其在原图上画出;将缺陷记录,判断存在缺陷,在图片上显示NOT OK

****************************************************************************************************

'''找缺陷'''

contours,hierarchy = cv2.findContours(dilate, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)  #寻找轮廓

s_bottle=cv2.cvtColor(bottle, cv2.COLOR_GRAY2BGR)

counts=[]

for cnt in contours:

  (x, y, w, h) = cv2.boundingRect(cnt)  #获取轮廓位置大小

# print(x, y, w, h)

  if x>circles_x1 and x<circles_x2 and y>circles_y1 and y<circles_y2 and (w>5 or h>5):  # 判断轮廓是否在瓶口处

    cv2.drawContours(s_bottle,cnt,-1,(0,0,255),2)  # 绘制轮廓

    counts.append(cnt)  # 记录缺陷

****************************************************************************************************

【A5】基于Python+OpenCV瓶口缺陷检测

以上就是瓶口缺陷检测的全部过程,其中还有不足,还达不到100%的成功

放上原图和最后做完的效果

【A5】基于Python+OpenCV瓶口缺陷检测

【A5】基于Python+OpenCV瓶口缺陷检测

按需写作:

【A5】基于Python+OpenCV瓶口缺陷检测

演示视频:

【A5】基于Python+OpenCV瓶口缺陷检测

点击查看:系统演示视频

运行效果:

源代码

./bottle_create.py 对框中瓶子进行检查

【A5】基于Python+OpenCV瓶口缺陷检测

./bottle_mouth.py 对瓶口缺陷进行检测

【A5】基于Python+OpenCV瓶口缺陷检测

源文件

./bottles 检测的原图像

./bottle 检测完的图像

远程协助:

温馨提示:索炜达.猿创官方提供收费远程协助,确保您项目运行成功。

点击查看:远程协助相关事项

我们提供完整项目文件清单如下:

文件目录

 ├ 1.项目源码

 ├ 2.运行截图

 └ 3.演示视频

TAG瓶口
  • 6 次
  • 450 分