Python+OpenCV實(shí)現(xiàn)表面缺陷檢測(cè)
對(duì)于現(xiàn)在很多工業(yè)檢測(cè),特別是對(duì)一些精密的器件進(jìn)行篩選,往往都是像素級(jí)別的,十分的精確。
主要思想
- 將圖像轉(zhuǎn)化為二值圖像
- 在對(duì)圖像進(jìn)行腐蝕/膨脹處理
- 在進(jìn)行輪廓檢測(cè)
- 篩選目標(biāo)大小符合的輪廓(排除誤差小的輪廓)
- 在在進(jì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)學(xué)膨脹 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) # 輪廓的個(gè)數(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) # 這個(gè)函數(shù)可以獲得一個(gè)圖像的最小矩形邊框一些信息,參數(shù)img是一個(gè)二值圖像,它可以返回四個(gè)參數(shù),左上角坐標(biāo),矩形的寬高 (輪廓集合 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)) # 多個(gè)多邊形填充 t2 = time.time() print('時(shí)間:',t2-t1) cv2.imwrite('./output/28901647.jpg', img)
1、尋找到的輪廓信息(缺陷)
2、通過腐蝕、膨脹后的,篩選出的較大缺陷
3、通過不同程度的膨脹腐蝕、缺陷面積篩選
以上就是Python+OpenCV實(shí)現(xiàn)表面缺陷檢測(cè)的詳細(xì)內(nèi)容,更多關(guān)于Python OpenCV缺陷檢測(cè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python利用pyodbc庫(kù)將文件信息插入Access數(shù)據(jù)庫(kù)
在日常編程工作中,我們經(jīng)常需要處理文件和文件夾,所以本文將介紹如何使用Python編程語言和wxPython庫(kù)創(chuàng)建一個(gè)簡(jiǎn)單的文件瀏覽器界面,使用戶能夠選擇文件夾并將文件信息插入到Access數(shù)據(jù)庫(kù)中,需要的可以參考下2023-08-08Python實(shí)現(xiàn)的生成自我描述腳本分享(很有意思的程序)
這篇文章主要介紹了Python實(shí)現(xiàn)的生成自我描述腳本分享,很有意思的程序,繞的人有點(diǎn)頭暈,需要的朋友參考下吧2014-07-07Python?matplotlib繪制散點(diǎn)圖配置(萬能模板案例)
這篇文章主要介紹了Python?matplotlib繪制散點(diǎn)圖配置(萬能模板案例),散點(diǎn)圖是指在??回歸分析???中,數(shù)據(jù)點(diǎn)在直角坐標(biāo)系平面上的?分布圖???,散點(diǎn)圖表示因變量隨??自變量???而?變化???的大致趨勢(shì),據(jù)此可以選擇合適的函數(shù)??對(duì)數(shù)???據(jù)點(diǎn)進(jìn)行?擬合2022-07-07Python利用Nagios增加微信報(bào)警通知的功能
Nagios是一款開源的免費(fèi)網(wǎng)絡(luò)監(jiān)視工具,能有效監(jiān)控Windows、Linux和Unix的主機(jī)狀態(tài),交換機(jī)路由器等網(wǎng)絡(luò)設(shè)置,打印機(jī)等,本文給大家介紹Python利用Nagios增加微信報(bào)警通知的功能,需要的朋友參考下2016-02-02Python 單例設(shè)計(jì)模式用法實(shí)例分析
這篇文章主要介紹了Python 單例設(shè)計(jì)模式用法,結(jié)合實(shí)例形式分析了Python單例模式的具體定義與使用操作技巧,需要的朋友可以參考下2019-09-09python實(shí)現(xiàn)簡(jiǎn)單日志記錄庫(kù)glog的使用
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單日志記錄庫(kù)glog的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12對(duì)python 多線程中的守護(hù)線程與join的用法詳解
今天小編就為大家分享一篇對(duì)python 多線程中的守護(hù)線程與join的用法詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02