Python+OpenCV實現(xiàn)表面缺陷檢測
更新時間:2022年08月05日 15:13:00 作者:醉公子~
對于現(xiàn)在很多工業(yè)檢測,特別是對一些精密的器件進行篩選,往往都是像素級別的,十分的精確。本文將利用OpenCV+Python實現(xiàn)表面缺陷檢測,感興趣的可以了解一下
對于現(xiàn)在很多工業(yè)檢測,特別是對一些精密的器件進行篩選,往往都是像素級別的,十分的精確。
主要思想
- 將圖像轉(zhuǎn)化為二值圖像
- 在對圖像進行腐蝕/膨脹處理
- 在進行輪廓檢測
- 篩選目標大小符合的輪廓(排除誤差小的輪廓)
- 在在進行膨脹化處理,將輪廓信息繪制出
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) # 形態(tài)學膨脹 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) # 輪廓的個數(shù) cv_contours = [] for contour in contours: area = cv2.contourArea(contour) if area <= 500:# 篩選面積大于500的,小于500的全部變?yōu)?55, cv_contours.append(contour) # 方式一 # x, y, w, h = cv2.boundingRect(contour) # 這個函數(shù)可以獲得一個圖像的最小矩形邊框一些信息,參數(shù)img是一個二值圖像,它可以返回四個參數(shù),左上角坐標,矩形的寬高 (輪廓集合 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實現(xiàn)表面缺陷檢測的詳細內(nèi)容,更多關(guān)于Python OpenCV缺陷檢測的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python利用pyodbc庫將文件信息插入Access數(shù)據(jù)庫
在日常編程工作中,我們經(jīng)常需要處理文件和文件夾,所以本文將介紹如何使用Python編程語言和wxPython庫創(chuàng)建一個簡單的文件瀏覽器界面,使用戶能夠選擇文件夾并將文件信息插入到Access數(shù)據(jù)庫中,需要的可以參考下2023-08-08Python實現(xiàn)的生成自我描述腳本分享(很有意思的程序)
這篇文章主要介紹了Python實現(xiàn)的生成自我描述腳本分享,很有意思的程序,繞的人有點頭暈,需要的朋友參考下吧2014-07-07Python?matplotlib繪制散點圖配置(萬能模板案例)
這篇文章主要介紹了Python?matplotlib繪制散點圖配置(萬能模板案例),散點圖是指在??回歸分析???中,數(shù)據(jù)點在直角坐標系平面上的?分布圖???,散點圖表示因變量隨??自變量???而?變化???的大致趨勢,據(jù)此可以選擇合適的函數(shù)??對數(shù)???據(jù)點進行?擬合2022-07-07