張代偉
(達(dá)拉斯(青島)特種吸附劑有限公司,山東 青島 266717)
目前,各大視覺廠商已經(jīng)開發(fā)了大量用于視覺檢測(cè)的成套軟件,比如康耐視的VisionPro、??低暤腣isionMaster等,這些商業(yè)軟件雖然功能強(qiáng)大,但價(jià)格不菲,而且實(shí)際應(yīng)用中僅需要其中一個(gè)或幾個(gè)檢測(cè)方法,其他大部分功能是不需要的,軟件運(yùn)行時(shí)檢測(cè)耗時(shí)也較長(zhǎng)。
OpenCV是一個(gè)基于Apache 2.0許可(開源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,可以運(yùn)行在Linux、Windows、Android和Mac OS操作系統(tǒng)上。它屬輕量級(jí)而且高效——由一系列C函數(shù)和少量C++類構(gòu)成,同時(shí)提供了Python、Ruby、MATLAB等語言的接口,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺方面的很多通用算法。
如果使用OpenCV針對(duì)某個(gè)應(yīng)用場(chǎng)合開發(fā)出特定的軟件用于視覺檢測(cè),那將節(jié)省不少成本,并且應(yīng)用設(shè)計(jì)更靈活,不必受限于商業(yè)軟件的功能框架,檢測(cè)時(shí)間也會(huì)較短。
筆者近期完成了一個(gè)項(xiàng)目,應(yīng)用場(chǎng)景為:某包裝車間紙箱內(nèi)需要放置一袋濾紙和其他產(chǎn)品,包裝工有時(shí)會(huì)忘記將濾紙放進(jìn)包裝箱,為了保證每箱都放濾紙,要求檢測(cè)濾紙已放入紙箱,否則傳送帶不運(yùn)行,不能進(jìn)行接下來的操作流程。
經(jīng)過多種檢測(cè)方案比較,最終選用視覺檢測(cè)。在濾紙包裝袋上印刷綠色色條,用視覺鏡頭檢測(cè)顏色,檢測(cè)到目標(biāo)區(qū)域(紙箱區(qū)域)有綠色且超過一定面積,即認(rèn)為濾紙已放入包裝箱,下游傳送帶啟動(dòng),流程繼續(xù)進(jìn)行;否則報(bào)警并停運(yùn)下游傳送帶。
下面是具體實(shí)施過程:如圖1所示,上位機(jī)程序運(yùn)行在PC端,主要連接相機(jī)采集圖像,并進(jìn)行目標(biāo)視覺識(shí)別,當(dāng)濾紙色條出現(xiàn)在目標(biāo)區(qū)域并達(dá)到一定面積后給PLC輸出OK信號(hào),并存儲(chǔ)一張照片到指定文件夾以備后期查詢,否則一直采集圖像進(jìn)行識(shí)別。
圖1 總體控制流程
PLC接收到OK指令后啟動(dòng)傳送帶,點(diǎn)亮綠色指示燈。
1)安裝VS2015,安裝OpenCV3.4。
2)配置OpenCV運(yùn)行環(huán)境,這一步一定要配置完善,否則調(diào)試總是報(bào)錯(cuò)。
具體配置方法如下:計(jì)算機(jī)→(右鍵)屬性→高級(jí)系統(tǒng)設(shè)置→高級(jí)(標(biāo)簽)→環(huán)境變量→(雙擊)path(用戶,系統(tǒng)里面的path任選其一)→在變量值里面添加相應(yīng)的路徑。
對(duì)于32位系統(tǒng),就添加:“……opencvuildx86vc14in”;而對(duì)于64位系統(tǒng),可以兩個(gè)都添加:“……opencvuildx86vc14in”和“……opencvuildx64vc14in”。
這樣就可以在編譯器Win32和X64中來回切換,游刃有余。
注:變量值實(shí)際為bin文件夾的路徑;D表示OpenCV安裝于D盤;X64表示運(yùn)行系統(tǒng)環(huán)境為64位系統(tǒng),若安裝于32位系統(tǒng),應(yīng)為X86;vc14表示編譯環(huán)境為Microsoft Visual Studio 2015;變量添加完成后需要注銷系統(tǒng),才會(huì)生效。3)人機(jī)界面設(shè)計(jì)如圖2所示。
圖2 人機(jī)界面
4)圖像采集及顏色識(shí)別[1]。點(diǎn)選圖像上綠色區(qū)域作為識(shí)別標(biāo)準(zhǔn),點(diǎn)擊Calculate按鈕保存相應(yīng)顏色數(shù)據(jù),同時(shí)將相關(guān)參數(shù)保存.txt文件到電腦硬盤,設(shè)置面積閾值數(shù)據(jù),新圖像經(jīng)顏色計(jì)算后與標(biāo)準(zhǔn)值比較,達(dá)到目標(biāo)值則給PLC輸出OK信號(hào),并保存一張照片至指定文件夾,便于以后查詢是否缺失。
5)與PLC通信。采用485Modbus與ModiconTM200C PLC通信[2],PC端配置一個(gè)485轉(zhuǎn)USB的轉(zhuǎn)換器。
PLC接線圖如圖3所示。
圖3 PLC接線圖
1)雙擊打開DZ.EXE軟件(一般不需要,因?yàn)樵摮绦驎?huì)隨機(jī)自動(dòng)啟動(dòng),軟件界面會(huì)自動(dòng)隱藏,防止操作工誤操作),同時(shí)按住鍵盤上的左箭頭和右箭頭可以調(diào)出程序主界面。
2)軟件運(yùn)行后會(huì)自動(dòng)打開攝像頭并讀入之前存儲(chǔ)的參數(shù)及標(biāo)準(zhǔn)參考圖片進(jìn)行識(shí)別計(jì)算,并輸出OK或NG信號(hào)。
3)若首次運(yùn)行或需要更改檢測(cè)目標(biāo),則遵循如下程序:
(1)將包裝箱放到目標(biāo)區(qū)域,放上色條濾紙,選擇PLC通信端口默認(rèn)COM7,此時(shí)通信數(shù)據(jù)會(huì)有變化。
(2)點(diǎn)擊7 Select Area按鈕,在彈出的窗口圖像上框選需要檢測(cè)的目標(biāo)區(qū)域,完成后關(guān)閉該窗口,則主畫面中的圖框2將會(huì)顯示剛才選擇的目標(biāo)區(qū)域。
(3)點(diǎn)擊14 GetRGB按鈕,在彈出的畫面點(diǎn)選目標(biāo)顏色(色條),圖框2中就會(huì)將所選顏色顯示成藍(lán)色,此時(shí)可以通過17文本框修改RGB允許誤差范圍,從而選擇合適的顏色區(qū)域;然后關(guān)閉該彈出窗口。
(4)點(diǎn)擊18 Calculate按鈕,計(jì)算參考圖片的RGB像素點(diǎn)數(shù),并保存參數(shù)。此時(shí)可以拿出放入濾紙,同時(shí)調(diào)整像素點(diǎn)數(shù)誤差范圍值21,以滿足檢測(cè)可靠性;然后放入濾紙?jiān)俅吸c(diǎn)擊18 Calculate按鈕,保存參數(shù)。這樣下次重啟時(shí)會(huì)自動(dòng)載入?yún)?shù)和標(biāo)準(zhǔn)參考圖片,不影響檢測(cè)。
(5)此時(shí),系統(tǒng)就可以正常運(yùn)行了。三色塔燈開始按邏輯指示:若PLC通信故障,紅燈亮;若放上包裝箱但并未放濾紙,則黃燈閃爍,等待放濾紙;若放上濾紙,則綠燈亮,封箱機(jī)運(yùn)行。箱子離開封箱位置后15 s,或者箱子離開封箱機(jī)2 s后綠燈滅,封箱機(jī)停,進(jìn)入下個(gè)循環(huán)。
(6)濾紙檢測(cè)OK的,系統(tǒng)會(huì)拍一張此時(shí)的照片存到上述指定路徑,如圖4所示。
圖4 保存的照片
1)該系統(tǒng)硬件易于實(shí)現(xiàn)且成本較低,使用普通的USB攝像頭即可。
2)該系統(tǒng)上位機(jī)顏色識(shí)別速度很快,約16 ms,而商業(yè)軟件開發(fā)的同類應(yīng)用(如??低暤腣isionMaster)需要至少50 ms。
3)該系統(tǒng)前期軟件開發(fā)耗時(shí)長(zhǎng),但總體成本很低,約是采用成套商業(yè)軟硬件開發(fā)成本的10%,有很大的成本優(yōu)勢(shì)。
4)由于使用的是USB攝像頭以及USB轉(zhuǎn)485,受限于USB口的可靠性,使用時(shí)偶爾會(huì)出現(xiàn)死機(jī)現(xiàn)象,如果可靠性要求高的話,可以選擇更可靠的攝像頭及接線485模塊。