機器視覺第七次實驗
一、實驗目的
通過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)
圖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")
圖3.2顯示合格與否的圖片
四、實驗中的錯誤
此次實驗中未遇到到太大的問題。
五、實驗總結
學習了OpenCV的缺陷檢測技術,提升了自己的能力。