這篇文章主要講解了“python opencv如何實(shí)現(xiàn)圖片缺陷檢測(cè)”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“python opencv如何實(shí)現(xiàn)圖片缺陷檢測(cè)”吧!
讓客戶(hù)滿意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:主機(jī)域名、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、德州網(wǎng)站維護(hù)、網(wǎng)站推廣。python是什么意思Python是一種跨平臺(tái)的、具有解釋性、編譯性、互動(dòng)性和面向?qū)ο蟮哪_本語(yǔ)言,其最初的設(shè)計(jì)是用于編寫(xiě)自動(dòng)化腳本,隨著版本的不斷更新和新功能的添加,常用于用于開(kāi)發(fā)獨(dú)立的項(xiàng)目和大型項(xiàng)目。
一、利用直方圖的方式進(jìn)行批量的圖片缺陷檢測(cè)(方法簡(jiǎn)單)
二、步驟(完整代碼見(jiàn)最后)
2.1灰度轉(zhuǎn)換(將原圖和要檢測(cè)對(duì)比的圖分開(kāi)灰度化)
灰度化的作用是因?yàn)楹竺娴闹狈綀D比較需要以像素256為基準(zhǔn)進(jìn)行相關(guān)性比較
img = cv2.imread("0.bmp") #原圖灰度轉(zhuǎn)換 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) #循環(huán)要檢測(cè)的圖,均灰度化 for i in range(1, 6): t1=cv2.cvtColor(cv2.imread(str(i)+".bmp"),cv2.COLOR_RGB2GRAY)
2.2 直方圖計(jì)算(結(jié)果其實(shí)是二維的圖表--用畫(huà)圖的方式展示)
calcHist參數(shù)講解
第一個(gè)參數(shù): 必須為列表[],哪怕只有一個(gè)圖片 ,image輸入圖像
channels::傳入圖像的通道, 如果是灰度圖像,那就不用說(shuō)了,只有一個(gè)通道,值為0 ,如果是彩色圖像(有3個(gè)通道),那么值為0,1,2,中選擇一個(gè),對(duì)應(yīng)著B(niǎo)GR各個(gè)通道。這個(gè)值也得用[]傳入。
mask:掩膜圖像。 如果統(tǒng)計(jì)整幅圖,那么為none 。主要是如果要統(tǒng)計(jì)部分圖的直方圖,就得構(gòu)造相應(yīng)的炎掩膜來(lái)計(jì)算。
histSize:灰度級(jí)的個(gè)數(shù), 需要中括號(hào),比如[256]
ranges:像素值的范圍, 通常[0,256] ,有的圖像如果不是0-256,比如說(shuō)你來(lái)回各種變換導(dǎo)致像素值負(fù)值、很大,則需要調(diào)整后才可以。
#直方圖計(jì)算的函數(shù),反應(yīng)灰度值的分布情況
hist = cv2.calcHist([gray], [0], None, [256], [0.0,255.0])
h2 = cv2.calcHist([t1], [0], None, [256], [0.0,255.0])
2.3 相關(guān)性比較
cv2.compareHist(H1, H2, method)
其中:
H1,H2 分別為要比較圖像的直方圖
method - 比較方式
比較方式(method)
相關(guān)性比較 (method=cv.HISTCMP_CORREL) 值越大,相關(guān)度越高,大值為1,最小值為0-----------------------只用一種固然不是很?chē)?yán)謹(jǐn),但這里做示范,把閾值調(diào)高也差不多( 取大于等于0.9 )
卡方比較(method=cv.HISTCMP_CHISQR 值越小,相關(guān)度越高,大值無(wú)上界,最小值0
巴氏距離比較(method=cv.HISTCMP_BHATTACHARYYA) 值越小,相關(guān)度越高,大值為1,最小值為0
#相關(guān)性計(jì)算,采用相關(guān)系數(shù)的方式
result = cv2.compareHist(hist,h2,method=cv2.HISTCMP_CORREL)
2.4 展示結(jié)果(判斷閾值)
相關(guān)系數(shù)含義參考表
im = Image.open(str(i) + ".bmp") draw = ImageDraw.Draw(im) fnt = ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc', 30) #這里視作》=0.9認(rèn)為相似,即合格 if result >=0.9: draw.text((5, 10), u'合格', fill='red', font=fnt) else: draw.text((5, 10), u'不合格', fill='red', font=fnt) im.show("result" +str(i) + ".png")
三、完整代碼
# -*- coding: UTF-8 -*- import cv2 from PIL import Image, ImageDraw, ImageFont img = cv2.imread("0.bmp") #原圖灰度轉(zhuǎn)換 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) for i in range(1, 6): t1=cv2.cvtColor(cv2.imread(str(i)+".bmp"),cv2.COLOR_RGB2GRAY) #直方圖計(jì)算的函數(shù),反應(yīng)灰度值的分布情況 hist = cv2.calcHist([gray], [0], None, [256], [0.0,255.0]) h2 = cv2.calcHist([t1], [0], None, [256], [0.0,255.0]) #相關(guān)性計(jì)算,采用相關(guān)系數(shù)的方式 result = cv2.compareHist(hist,h2,method=cv2.HISTCMP_CORREL) im = Image.open(str(i) + ".bmp") draw = ImageDraw.Draw(im) fnt = ImageFont.truetype(r'C:\Windows\Fonts\simsun.ttc', 30) #這里視作》=0.9認(rèn)為相似,即合格 if result >=0.9: draw.text((5, 10), u'合格', fill='red', font=fnt) else: draw.text((5, 10), u'不合格', fill='red', font=fnt) im.show("result" +str(i) + ".png")
總結(jié)
感謝各位的閱讀,以上就是“python opencv如何實(shí)現(xiàn)圖片缺陷檢測(cè)”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)python opencv如何實(shí)現(xiàn)圖片缺陷檢測(cè)這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
當(dāng)前文章:pythonopencv如何實(shí)現(xiàn)圖片缺陷檢測(cè)-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)URL:http://muchs.cn/article18/csggdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)、微信小程序、網(wǎng)站營(yíng)銷(xiāo)、云服務(wù)器、品牌網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容