張代偉
(達拉斯(青島)特種吸附劑有限公司,山東 青島 266717)
目前,各大視覺廠商已經開發了大量用于視覺檢測的成套軟件,比如康耐視的VisionPro、海康威視的VisionMaster等,這些商業軟件雖然功能強大,但價格不菲,而且實際應用中僅需要其中一個或幾個檢測方法,其他大部分功能是不需要的,軟件運行時檢測耗時也較長。
OpenCV是一個基于Apache 2.0許可(開源)發行的跨平臺計算機視覺和機器學習軟件庫,可以運行在Linux、Windows、Android和Mac OS操作系統上。它屬輕量級而且高效——由一系列C函數和少量C++類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。
如果使用OpenCV針對某個應用場合開發出特定的軟件用于視覺檢測,那將節省不少成本,并且應用設計更靈活,不必受限于商業軟件的功能框架,檢測時間也會較短。
筆者近期完成了一個項目,應用場景為:某包裝車間紙箱內需要放置一袋濾紙和其他產品,包裝工有時會忘記將濾紙放進包裝箱,為了保證每箱都放濾紙,要求檢測濾紙已放入紙箱,否則傳送帶不運行,不能進行接下來的操作流程。
經過多種檢測方案比較,最終選用視覺檢測。在濾紙包裝袋上印刷綠色色條,用視覺鏡頭檢測顏色,檢測到目標區域(紙箱區域)有綠色且超過一定面積,即認為濾紙已放入包裝箱,下游傳送帶啟動,流程繼續進行;否則報警并停運下游傳送帶。
下面是具體實施過程:如圖1所示,上位機程序運行在PC端,主要連接相機采集圖像,并進行目標視覺識別,當濾紙色條出現在目標區域并達到一定面積后給PLC輸出OK信號,并存儲一張照片到指定文件夾以備后期查詢,否則一直采集圖像進行識別。

圖1 總體控制流程
PLC接收到OK指令后啟動傳送帶,點亮綠色指示燈。
1)安裝VS2015,安裝OpenCV3.4。
2)配置OpenCV運行環境,這一步一定要配置完善,否則調試總是報錯。
具體配置方法如下:計算機→(右鍵)屬性→高級系統設置→高級(標簽)→環境變量→(雙擊)path(用戶,系統里面的path任選其一)→在變量值里面添加相應的路徑。
對于32位系統,就添加:“……opencvuildx86vc14in”;而對于64位系統,可以兩個都添加:“……opencvuildx86vc14in”和“……opencvuildx64vc14in”。
這樣就可以在編譯器Win32和X64中來回切換,游刃有余。
注:變量值實際為bin文件夾的路徑;D表示OpenCV安裝于D盤;X64表示運行系統環境為64位系統,若安裝于32位系統,應為X86;vc14表示編譯環境為Microsoft Visual Studio 2015;變量添加完成后需要注銷系統,才會生效。3)人機界面設計如圖2所示。

圖2 人機界面
4)圖像采集及顏色識別[1]。點選圖像上綠色區域作為識別標準,點擊Calculate按鈕保存相應顏色數據,同時將相關參數保存.txt文件到電腦硬盤,設置面積閾值數據,新圖像經顏色計算后與標準值比較,達到目標值則給PLC輸出OK信號,并保存一張照片至指定文件夾,便于以后查詢是否缺失。
5)與PLC通信。采用485Modbus與ModiconTM200C PLC通信[2],PC端配置一個485轉USB的轉換器。
PLC接線圖如圖3所示。

圖3 PLC接線圖
1)雙擊打開DZ.EXE軟件(一般不需要,因為該程序會隨機自動啟動,軟件界面會自動隱藏,防止操作工誤操作),同時按住鍵盤上的左箭頭和右箭頭可以調出程序主界面。
2)軟件運行后會自動打開攝像頭并讀入之前存儲的參數及標準參考圖片進行識別計算,并輸出OK或NG信號。
3)若首次運行或需要更改檢測目標,則遵循如下程序:
(1)將包裝箱放到目標區域,放上色條濾紙,選擇PLC通信端口默認COM7,此時通信數據會有變化。
(2)點擊7 Select Area按鈕,在彈出的窗口圖像上框選需要檢測的目標區域,完成后關閉該窗口,則主畫面中的圖框2將會顯示剛才選擇的目標區域。
(3)點擊14 GetRGB按鈕,在彈出的畫面點選目標顏色(色條),圖框2中就會將所選顏色顯示成藍色,此時可以通過17文本框修改RGB允許誤差范圍,從而選擇合適的顏色區域;然后關閉該彈出窗口。
(4)點擊18 Calculate按鈕,計算參考圖片的RGB像素點數,并保存參數。此時可以拿出放入濾紙,同時調整像素點數誤差范圍值21,以滿足檢測可靠性;然后放入濾紙再次點擊18 Calculate按鈕,保存參數。這樣下次重啟時會自動載入參數和標準參考圖片,不影響檢測。
(5)此時,系統就可以正常運行了。三色塔燈開始按邏輯指示:若PLC通信故障,紅燈亮;若放上包裝箱但并未放濾紙,則黃燈閃爍,等待放濾紙;若放上濾紙,則綠燈亮,封箱機運行。箱子離開封箱位置后15 s,或者箱子離開封箱機2 s后綠燈滅,封箱機停,進入下個循環。
(6)濾紙檢測OK的,系統會拍一張此時的照片存到上述指定路徑,如圖4所示。

圖4 保存的照片
1)該系統硬件易于實現且成本較低,使用普通的USB攝像頭即可。
2)該系統上位機顏色識別速度很快,約16 ms,而商業軟件開發的同類應用(如海康威視的VisionMaster)需要至少50 ms。
3)該系統前期軟件開發耗時長,但總體成本很低,約是采用成套商業軟硬件開發成本的10%,有很大的成本優勢。
4)由于使用的是USB攝像頭以及USB轉485,受限于USB口的可靠性,使用時偶爾會出現死機現象,如果可靠性要求高的話,可以選擇更可靠的攝像頭及接線485模塊。