【全球报资讯】Python+OpenCV实现表面缺陷检测
【资料图】
对于现在很多工业检测,特别是对一些精密的器件进行筛选,往往都是像素级别的,十分的精确。
主要思想
将图像转化为二值图像在对图像进行腐蚀/膨胀处理在进行轮廓检测筛选目标大小符合的轮廓(排除误差小的轮廓)在在进行膨胀化处理,将轮廓信息绘制出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、通过不同程度的膨胀腐蚀、缺陷面积筛选
以上就是Python+OpenCV实现表面缺陷检测的详细内容,更多关于Python OpenCV缺陷检测的资料请关注脚本之家其它相关文章!
X 关闭
X 关闭
- 1如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 2AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 3转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 4充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 5好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 6名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 7亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战
- 8京东绿色建材线上平台上线 新增用户70%来自下沉市场
- 9网红淘品牌“七格格”chuu在北京又开一家店 潮人新宠chuu能红多久
- 10市场竞争加剧,有车企因经营不善出现破产、退网、退市