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