Python+OpenCV实现表面缺陷检测
作者:醉公子~ 时间:2021-10-17 21:25:21
对于现在很多工业检测,特别是对一些精密的器件进行筛选,往往都是像素级别的,十分的精确。
主要思想
将图像转化为二值图像
在对图像进行腐蚀/膨胀处理
在进行轮廓检测
筛选目标大小符合的轮廓(排除误差小的轮廓)
在在进行膨胀化处理,将轮廓信息绘制出
import cv2
import os
import numpy as np
import time
t1 = time.time()
img = cv2.imread('./label/28901647.jpg', 0)
img_copy = cv2.imread('./label/28901647.jpg', 0)
mask = np.zeros_like(img)
print(np.shape(img))
# 先利用二值化去除图片噪声
ret, img = cv2.threshold(img, 80, 255, cv2.THRESH_BINARY)
es = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (4, 2))
img = cv2.dilate(img, es, iterations=1) # 形态学膨胀
kernel = np.ones(shape=[5,5],dtype=np.uint8)
img = cv2.erode(img,kernel=kernel) # 腐蚀操作
cv2.imshow('aa',img)
cv2.waitKey(0)
contours, _ = cv2.findContours(img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
n = len(contours) # 轮廓的个数
cv_contours = []
for contour in contours:
area = cv2.contourArea(contour)
if area <= 500:# 筛选面积大于500的,小于500的全部变为255,
cv_contours.append(contour)
# 方式一
# x, y, w, h = cv2.boundingRect(contour) # 这个函数可以获得一个图像的最小矩形边框一些信息,参数img是一个二值图像,它可以返回四个参数,左上角坐标,矩形的宽高 (轮廓集合 contour)
# img[y:y + h, x:x + w] = 255
else:
cv2.drawContours(img_copy, [contour], -1, (0, 0, 255), 0) # 多边形轮廓绘制
print('area:', area)
continue
# 方式二
cv2.fillPoly(img, cv_contours, (255, 255, 255)) # 多个多边形填充
t2 = time.time()
print('时间:',t2-t1)
cv2.imwrite('./output/28901647.jpg', img)
1、寻找到的轮廓信息(缺陷)
2、通过腐蚀、膨胀后的,筛选出的较大缺陷
3、通过不同程度的膨胀腐蚀、缺陷面积筛选
来源:https://blog.csdn.net/qq_44936246/article/details/126151769
标签:Python,OpenCV,缺陷,检测
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
php+mysqli数据库连接的两种方式
2023-10-08 22:15:16
Python如何测试stdout输出
2023-10-22 23:59:56
python解析PDF程序代码
2021-05-17 03:16:55
Win10用vscode打开anaconda环境中的python出错问题的解决
2023-04-21 09:21:21
20行代码教你用python给证件照换底色的方法示例
2023-04-03 23:48:32
![](https://img.aspxhome.com/file/2023/9/90309_0s.jpg)
css可以给img元素设置背景图
2008-09-29 15:35:00
python 如何比较两集合的大小关系
2023-10-14 01:37:06
解析ROC曲线绘制(python+sklearn+多分类)
2021-04-06 12:16:16
![](https://img.aspxhome.com/file/2023/4/78564_0s.png)
Flash真的适合做网站应用吗?
2011-04-16 10:34:00
Asp教程:Response对象
2007-10-01 18:08:00
设计上的小细节
2010-06-24 21:44:00
![](https://img.aspxhome.com/file/UploadPic/20106/24/joyo-11s.png)
python基础教程之对象和类的实际运用
2023-07-11 10:25:55
python中关于range()函数反向遍历的几种表达
2023-07-09 20:23:33
软件与网站设计的区别
2009-05-04 14:30:00
Python中的几种矩阵乘法(小结)
2021-11-29 23:51:33
使用python turtle画高达
2021-11-05 20:47:48
![](https://img.aspxhome.com/file/2023/2/84082_0s.jpg)
python 实现关联规则算法Apriori的示例
2021-05-21 08:45:30
基于python实现图片转字符画代码实例
2023-05-17 01:53:37
![](https://img.aspxhome.com/file/2023/0/66290_0s.png)
基于Python实现批量保存视频到本地
2023-10-14 12:24:27
![](https://img.aspxhome.com/file/2023/7/118787_0s.png)
python操作excel的方法(xlsxwriter包的使用)
2021-10-26 21:47:54