Python-OpenCV實現圖像缺陷檢測的實例

在Jupyter Notebook上使用Python+opencv實現如下圖像缺陷檢測。關於opencv庫的安裝可以參考:Python下opencv庫的安裝過程與一些問題匯總。

1.實現代碼

import cv2
import numpy
from PIL import Image, ImageDraw, ImageFont

#用於給圖片添加中文字符
def ImgText_CN(img, text, left, top, textColor=(0, 255, 0), textSize=20):
    if (isinstance(img, numpy.ndarray)):  #判斷是否為OpenCV圖片類型
        img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
    draw = ImageDraw.Draw(img)
    fontText = ImageFont.truetype("font/simhei.ttf", textSize, encoding="utf-8")
    draw.text((left, top), text, textColor, font=fontText)
return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)

#讀取原圖片
image0=cv2.imread("0.bmp")
cv2.imshow("image0", image0)
#灰度轉換
gray0 = cv2.cvtColor(image0, cv2.COLOR_RGB2GRAY)
cv2.imshow("gray0", gray0)for i in range(1,6):
    img0=cv2.imread(str(i)+".bmp")#原圖片
    img=cv2.cvtColor(cv2.imread(str(i)+".bmp"),cv2.COLOR_RGB2GRAY)#灰度圖
    #使用calcHist()函數計算直方圖,反映灰度值的分佈情況
    hist = cv2.calcHist([gray0], [0], None, [256], [0.0,255.0])
    h1 = cv2.calcHist([img], [0], None, [256], [0.0,255.0]) 
    #計算圖片相似度
    result = cv2.compareHist(hist,h1,method=cv2.HISTCMP_BHATTACHARYYA)#巴氏距離比較,值越小相關度越高,最大值為1,最小值為0
    #print(result)
    #設定閾值為0.1,若相似度小於0.1則為合格,否則不合格
    if result <0.1:
        detect=ImgText_CN(img0, '合格', 10, 10, textColor=(255, 0, 0), textSize=30)
    else:
        detect=ImgText_CN(img0, '不合格', 10, 10, textColor=(255, 0, 0), textSize=30)
    cv2.imshow("Detect_" +str(i),detect)
cv2.waitKey(0)

2.運行結果

到此這篇關於Python-OpenCV實現圖像缺陷檢測的實例的文章就介紹到這瞭,更多相關OpenCV 圖像缺陷檢測內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: