舒 慧,張 融,李 皓,楊世昌
(1.武昌工學(xué)院智能制造學(xué)院,湖北 武漢 430065;2.綠色風(fēng)機(jī)制造湖北協(xié)同創(chuàng)新中心,湖北 武漢 430065)
隨著物流行業(yè)的蓬勃發(fā)展,條碼被廣泛應(yīng)用于快遞物流產(chǎn)品的傳輸、識別、記錄等方面,舊的條碼標(biāo)識依賴人工較多,受舊識別技術(shù)、自身速度等因素的限制,識別速度過慢,工作效率過低[1-2]。針對這一問題,可以設(shè)計(jì)一種基于機(jī)器視覺和工業(yè)機(jī)器人的快速分揀自動控制系統(tǒng)。
機(jī)器視覺系統(tǒng)采集條碼信息時(shí),通過高清攝像頭采集快遞物流產(chǎn)品的圖形、尺寸、質(zhì)量等信息,發(fā)送到計(jì)算機(jī)中進(jìn)行圖像處理和識別,再將識別結(jié)果與產(chǎn)品特征參數(shù)和物流信息一起發(fā)送到執(zhí)行單元,以此來實(shí)現(xiàn)視覺系統(tǒng)和工業(yè)機(jī)器人對目標(biāo)物的有效信息的快速識別,以及對目標(biāo)物的動態(tài)追蹤和抓取分揀,與以往人工稱重、人工復(fù)檢相比,可靠性和工作效率大大提高[3]。
本文研究的是基于機(jī)器視覺技術(shù)的分揀系統(tǒng)設(shè)計(jì),針對物流線上出現(xiàn)的不同物品,進(jìn)行跟蹤拍照、掃碼識別、區(qū)塊分揀。
具體工作過程是將輸送帶上的快遞包裹運(yùn)送至視覺檢測處,激活拍照傳感器,輸送帶停止傳送,智能相機(jī)根據(jù)外部信號觸發(fā)拍照,獲取靜止?fàn)顟B(tài)下當(dāng)前快遞包裹的圖片信息,視覺系統(tǒng)通過圖像識別,將快遞包裹的位姿進(jìn)行提取和識別,再將識別結(jié)果傳遞給機(jī)械臂,從而實(shí)現(xiàn)快遞包裹的自動分揀,具體工作流程如圖1 所示。
圖1 快遞分揀視覺系統(tǒng)的工作流程
硬件設(shè)備:樹莓派博通BCM2837、工業(yè)相機(jī)HV3808、筆記本電腦、USB 串口通信線、網(wǎng)線。
軟件環(huán)境:Python3.7、VS code 集成開發(fā)環(huán)境(Windows x64 User Installer 版本)、第三方Python庫(QRcode 庫、Pyzbar 庫和Pillow 庫)、VNC 軟件、File Zilla 軟件。
圖像處理是指利用計(jì)算機(jī)算法,對圖像進(jìn)行分析運(yùn)算的處理技術(shù),包括圖像的存儲、表示、提取、運(yùn)算、增強(qiáng)、恢復(fù)和解譯等[4]。
目前,快遞信息通常采用條形碼或者二維碼的形式進(jìn)行承載,本文主要對二維碼的圖像處理進(jìn)行分析研究,具體處理流程如下:①圖像獲取與存儲;②加載圖像數(shù)據(jù)至內(nèi)存并存盤;③操作、增強(qiáng)和復(fù)原,即圖像轉(zhuǎn)換(二值化、灰度化)、圖像增強(qiáng)(清晰化處理)、圖像去噪及復(fù)原;④圖像分割;⑤信息提取與表示;⑥圖像理解/圖像結(jié)束,即圖像分類、對象識別。
本文基于Python 編寫了一套程序來實(shí)現(xiàn)對快遞二維碼圖像的識別處理,以樹莓派作為微控制器,使用Python+OpenCV 庫編程[5-6],其中,部分程序如下所示:
加載測試所需要的庫
import cv2
import time
from PIL import Image
from pyzbar import pyzbar
提取二維碼邊框并繪出
def decodeDisplay(image):
barcodes=pyzbar.decode(image)
for barcode in barcodes:
# 提取二維碼的邊界框的位置,畫出圖像中條形碼的邊界框
(x,y,w,h)=barcode.rect
cv2.rectangle(image, (x, y), (x + w, y + h),(225,0,0),2)
提取二維碼數(shù)據(jù)為字節(jié)對象并轉(zhuǎn)換成字符串
barcodeData=barcode.data.decode("utf-8")
barcodeType=barcode.type
# 繪出圖像上二維碼的數(shù)據(jù)和條形碼類型
text = "{} ({})".format(barcodeData,barcodeType)
cv2.putText(image, text, (x-200, y - 10),cv2.FONT_HERSHEY_SIMPLEX,1.2,(255,136,0),2)
向終端打印二維碼數(shù)據(jù)和條形碼類型
value=barcode.data.decode("utf-8")
print("[INFO] Found {} barcode:{}".format(barcodeType,barcodeData))
if value=='Beijing':
print(該快遞包裹需要分發(fā)到北京地區(qū).")
elif value=='Shenzhen':
print(該快遞包裹需要分發(fā)到深圳地區(qū).")elif value=='Shanghai':
print(該快遞包裹需要分發(fā)到上海地區(qū).")
else:
print(未找到該快遞包裹需要分發(fā)的區(qū)域.")
return image
設(shè)置圖像捕獲設(shè)備參數(shù)和指令
def camera(cap):
print('請把含二維碼圖片放置攝像頭正下方.')
print('開始捕獲圖像,按空格鍵確認(rèn)拍照,ESC 鍵關(guān)閉窗口')
width=640
height=480
cap.set(cv2.CAP_PROP_FRAME_WIDTH,width)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,height)
while True:
# 捕獲視頻幀
ret,frame=cap.read()
image=frame.copy()
# 實(shí)時(shí)顯示二維碼
img=decodeDisplay(frame)
cv2.imshow('camera',img)
# 保持畫面持續(xù)
key=cv2.waitKey(1)
# 空格鍵保存
if key==ord(""):
cv2.imwrite(".image/image.png",image)
#Esc 退出
if key==27:
break
# 關(guān)閉攝像頭
# 關(guān)閉窗口
cap.release()
cv2.destroyAllWindows()
# 主程序入口
圖像捕獲設(shè)備的連接
if__name__=="__main__":
#0: 筆記本內(nèi)置攝像頭1:USB 攝像頭
cap=cv2.VideoCapture(1)
video="http://admin:admin@192.168.31.177:8081/"
# 此處@后的ipv4 地址需要改為app 提供的地址
cap=cv2.VideoCapture(video)
while True:
# 開始捕獲圖像camera(cap)
# 二維碼解碼
time.sleep(1)
本文所設(shè)計(jì)的視覺分揀系統(tǒng)使用工業(yè)相機(jī)來獲取快遞二維碼的圖像,經(jīng)過灰度化、二值化、去噪、增強(qiáng)、分割、提取等一系列圖像處理后,得到快遞二維碼的信息,再使用MODBUS TCP/IP 協(xié)議將所獲得的信息發(fā)送至工業(yè)機(jī)器人,由工業(yè)機(jī)器人進(jìn)行分類分揀。
仿真測試結(jié)果如圖2—圖4 所示。
圖2 深圳快遞
圖3 上??爝f
圖4 北京快遞
通過此次研究與分析,證明了利用機(jī)器視覺技術(shù)識別二維碼實(shí)現(xiàn)快遞分揀是切實(shí)可行的,采用工業(yè)相機(jī)實(shí)時(shí)獲取快遞二維碼圖像,再對圖像進(jìn)行識別處理、提取信息,并將獲得的信息傳遞給機(jī)器人,從而對快遞進(jìn)行分類。機(jī)器視覺技術(shù)具有識別速度快、準(zhǔn)確率高、抗干擾性強(qiáng)的優(yōu)點(diǎn),且此方案設(shè)計(jì)結(jié)構(gòu)簡單、便于組裝,極大地提高了快遞分揀效率,降低了人工成本??梢灶A(yù)見,機(jī)器視覺技術(shù)在傳統(tǒng)物流行業(yè)將發(fā)揮越來越大的作用。