您好,登錄后才能下訂單哦!
這篇“怎么使用Python+OpenCV實現表面缺陷檢測”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么使用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實現表面缺陷檢測”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。