python OpenCV 實現缺陷檢測


機器視覺第七次實驗

一、實驗目的

通過OpenCV第七次進行實驗,對圖片進行缺陷檢測。

二、實驗內容

對圖片進行缺陷測量。

三、實驗過程

我使用的是python語言+openCV對圖片進行缺陷檢測的功能。實驗過程我們需要導入的庫有import cv2;from PIL import Image, ImageDraw, ImageFont;

1)讀取圖片並且將其灰度化

我們采用一個for循環來讀取所有需要被檢測的圖片,然后將其灰度化,使用imread()函數讀取圖片,

代碼實例:

img = cv2.imread("0.bmp")

gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)

for i in range(1, 6):

    t1=cv2.cvtColor(cv2.imread(str(i)+".bmp"),cv2.COLOR_RGB2GRAY)

無標題.png 

圖3.1圖片灰度化

2)計算圖片的直方圖

使用calcHist()函數進行計算:

實例代碼:

#計算圖像直方圖

    hist = cv2.calcHist([gray], [0], None, [256], [0.0,255.0])

    h1 = cv2.calcHist([t1], [0], None, [256], [0.0,255.0])

3)圖片上字體,字號

輸入的代碼:

#對比圖片相似度

    result = sum(hist - h1)[0]

    #打開PIL創建的圖像

    im = Image.open(str(i) + ".bmp")

    #創建一個操作對象

    draw = ImageDraw.Draw(im)

    #字體對象為simsun,字大小為30號

    fnt = ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc', 30)

4)判斷圖片是否合格

使用一個if語句,如果圖片對比原圖相似度小於10,則合格;否則不合格。

實例代碼:

if result < 10:

        draw.text((5, 10), u'合格', fill='red', font=fnt)

    else:

        draw.text((5, 10), u'不合格', fill='red', font=fnt)

5)顯示圖片

實例代碼:

    im.show("result"+str(i)+".png")

1.png 

圖3.2顯示合格與否的圖片

四、實驗中的錯誤

此次實驗中未遇到到太大的問題。

五、實驗總結

學習了OpenCV的缺陷檢測技術,提升了自己的能力。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM