999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于OpenCV的機器人二維碼識別方法

2021-08-09 06:31:24朱玥郭依正詹雪敏
電子制作 2021年15期

朱玥,郭依正,詹雪敏

(南京師范大學泰州學院,江蘇泰州,225300)

0 引言

隨著智能手機和通信網絡技術的發展,二維碼(二維條碼)識別技術已廣泛應用于電子商務、物流、餐飲、交通、信息安全等領域[1-3]。而機器人工程是現在產業發展的主流方向之一,機器人的應用領域也在逐步擴大。讓機器人具有視覺能力,快速準確的識別二維碼,也是諸多應用場景的需要。

QR(Quick Response Code,快速響應矩陣碼)二維碼具有存儲的信息量大、抗噪能力強、識別快、無需依附數據庫等優點,是市場的主流,應用最為廣泛。對QR碼的研究,目前主要集中在光照不均處理、噪聲的消除、斜視畸變校正等幾個方面[4],比如對于二維碼去噪,高欣欣等人提出了一種迭代均值濾波算法[5],比如對于二維碼畸變校正,歐福超等人提出結合透視變換和插值運算的校正算法[6],在二維碼定位算法方面,劉宏偉等人提出了一種基于Hough變換和投影算法定位二維碼邊界[7]。QR碼包括功能圖像和編碼區兩部分,如圖1所示。因為二維碼已經應用的非常廣泛,如移動支付、身份校驗、數據下載、信息顯示、餐飲、物流等等,所以諸多軟硬件都集成了掃碼功能。本文以應用最廣泛的QR碼為例,闡述了一種機器人系統結構,及其基于此的二維碼的預處理、定位和識別過程,并且做了實驗驗證。

圖1 QR碼的結構

1 系統結構

如圖2所示,給出了一種典型的機器人系統結構。該結構分為四層,上層智能手機為操控端,通過藍牙、GPRS等連接樹莓派進而發出相關指令,樹莓派(Raspberry Pi)通過讀取攝像頭獲取外部圖像并識別,Arduino單片機為下位機,可以連接各類傳感器,典型的如溫濕度傳感器、火焰傳感器、紅外接收傳感器、紅外熱釋電運動傳感器等等,最底層為機器人的機械裝置。

圖2 機器人系統結構

要想在該系統結構上實現基于OpenCV (Open Source Computer Vision Library)的機器人二維碼識別,需要熟悉樹莓派、Python、OpenCV等。樹莓派是一款基于ARM的微型電腦主板,以SD卡為硬盤,支持安裝類Linux系統,體積小但功能齊全,可以完成一臺普通PC機能做的諸多事情,可謂是“麻雀雖小,五臟俱全”;Python是一種面向對象的解釋型程序設計語言,易學易用,既支持對數據進行分析,也可以分析智能硬件,是目前人工智能、機器視覺等領域的首選語言;OpenCV是一種跨平臺計算機視覺庫,對許多通用的圖像處理算法進行了封裝,OpenCV還提供了Java、Python、CUDA等的接口,讓圖像處理和圖像分析的使用變得更加方便。

2 二維碼預處理

二維碼預處理是二維碼定位與識別的基礎,其主要工作包括圖像類型的轉換、圖像邊緣檢測、數學形態學處理等。

(1)圖像類型轉換是將采集的彩色圖像轉換為灰度圖像,可以使用OpenCV中的cv2.cvtColor()函數實現。當攝像頭讀入圖像后,將讀取的幀轉為灰度圖。函數形式如下:

有兩個必選參數,src:原始圖像,code:顏色空間轉換方式。本示例中code取值為cv2.COLOR_BGR2GRAY。值得一提的是,在OpenCV中,彩色空間使用的BGR,即藍-綠-紅顏色空間。

(2)圖像邊緣檢測可以使用OpenCV自帶的cv2.Sobel()算子進行濾波。Sobel算子是常用的一種邊緣檢測算子,對邊緣方向信息的提供比較精確,但由于不是完全精確的邊緣定位,在對精度要求不是很高的情況下被經常采用。

Sobel算子是一個無方向的一階微分邊緣檢測算子,Sobel算子的表達式如下:

其中Dx、Dy分別表示水平方向算子和垂直方向算子。矩陣形式的模板表示如下:

在OpenCV中,Sobel算子的函數原型如下:

dst=cv2.Sobel(src,ddepth,dx,dy[,dst[,ksize[,scale[,d elta[,borderType]]]]])

其中前四個參數是必須的,其余的可選。src:原始圖像,ddepth:圖像像素深度,dx,dy:x和y方向上是否求導。

(3)數學形態學處理是對二值化后的圖像做開運算。二值化使用OpenCV中的cv2.threshold()函數實現,開運算主要作用是去毛刺、孤立點,同時基本保持原圖形狀信息不變,使用cv2.morphologyEx()函數實現。

在OpenCV中,cv2.threshold()的函數原型如下:

cv2.threshold(src,thresh,maxval,type[,dst])四個必選參數含義分別如下,src:原始圖像,thresh:分割閾值,maxval:大于閾值的點設置為maxval的值,type:算法類型。本示例中type取值為cv2.THRESH_BINARY。

開運算一種復合運算,它是對二值圖像先做腐蝕后做膨脹,公式表示如下所示,其中Θ代表腐蝕運算,⊕代表開運算,X為待處理的二值圖像,B為結構元素:

在OpenCV中,cv2.morphologyEx()的函數原型如下:

必選參數含義分別如下,src:原始圖像,op:運算類型,比如常見的開閉運算,op取值cv2.MORPH_OPEN時做的是開運算(先腐蝕后膨脹),op取值cv2. cv2.MORPH_CLOSE時做的是閉運算(先膨脹后腐蝕),kernel:結構元素。

3 二維碼定位與識別

現實中拍攝的二維碼圖像,或多或少的會包含一些背景信息。因此,在二維碼預處理后,需要進行邊界提取從而定位出二維碼,繼而提高識別精度和速度。邊界的提取使用OpenCV中的cv2.findContours()函數實現[8,9],該函數可以對二值圖像進行輪廓檢索,然后返回檢測到的輪廓數。接著,計算邊界最小包圍正方形,就可以定位出二維碼區域。

在OpenCV中,cv2.findContours()的函數原型如下:

必選參數含義分別如下,src:原始圖像,mode:檢測邊緣的方式,method:輪廓的近似方法。本示例中mode取值cv2.RETR_EXTERNAL,method取值cv2.CHAIN_APPROX_SIMPLE。

最后一步是二維碼識別,二維碼識別需要使用zbar庫,需要在終端使用sudo命令安裝,在代碼實現上,只需要加載該庫,并使用zbar.ImageScanner()進行掃描即可。

4 實現效果

為了驗證方法的有效性,在仿人機器人上做了實驗。如圖3所示,為機器人實物,并給出了樹莓派和攝像頭的連接。如圖4所示,給出了二維碼定位結果示例,進而成功識別出二維碼信息為“你好”。實驗較好的驗證了本文所述的基于OpenCV的機器人二維碼識別方法的可行性和正確性。

圖3 機器人實物

圖4 二維碼定位示例

5 結束語

本文論述了一種基于OpenCV的機器人二維碼識別方法,在給出了系統結構的基礎上,詳述了二維碼預處理、二維碼定位與識別等各個步驟,其中二維碼預處理重點講述了圖像類型轉換、圖像邊緣檢測和灰度化后的二值圖像數學形態學處理,并做了仿真實驗。對于開發和設計需要二維碼識別功能的機器人提供了參考。

主站蜘蛛池模板: 亚洲国产欧美国产综合久久| 精品国产欧美精品v| 日韩视频免费| 国产迷奸在线看| 91视频青青草| 国内精品一区二区在线观看| 五月天在线网站| 国产精品极品美女自在线网站| 99久久人妻精品免费二区| 国产91蝌蚪窝| 91青青在线视频| 国产精品三级专区| 毛片基地视频| 久久性视频| 国产最爽的乱婬视频国语对白| 在线精品亚洲国产| 国产日韩精品一区在线不卡| 久久香蕉国产线看观看亚洲片| 国产成人做受免费视频| 国产精品亚洲片在线va| 无码一区中文字幕| 老司机精品一区在线视频| 亚洲日韩AV无码一区二区三区人| 国产人免费人成免费视频| 伊人丁香五月天久久综合| 成人a免费α片在线视频网站| 欧美三级自拍| 亚洲人成网址| 国产福利一区二区在线观看| 精品天海翼一区二区| 久久婷婷五月综合97色| 18禁高潮出水呻吟娇喘蜜芽| 99热这里只有精品2| 国产无码制服丝袜| 国产一级视频久久| 一本色道久久88亚洲综合| 精品欧美一区二区三区久久久| 亚洲AV无码精品无码久久蜜桃| 国产视频久久久久| a毛片基地免费大全| 午夜毛片免费观看视频 | 538精品在线观看| 午夜小视频在线| 久久精品视频亚洲| 国产91全国探花系列在线播放| 国产白浆视频| 在线日韩日本国产亚洲| 日韩一区精品视频一区二区| 色悠久久综合| 毛片视频网| 久久无码av三级| 91口爆吞精国产对白第三集| 国产精品人莉莉成在线播放| 亚洲天堂免费| 日本亚洲欧美在线| 麻豆精品久久久久久久99蜜桃| 一级一级特黄女人精品毛片| 欧洲av毛片| 日韩精品无码不卡无码| 午夜不卡福利| 国产午夜精品鲁丝片| 欧美在线三级| 国产微拍精品| 国产网站免费看| 国产a网站| 狼友视频国产精品首页| 亚洲欧美另类视频| 亚洲AV无码一区二区三区牲色| 久青草国产高清在线视频| 日韩亚洲综合在线| 亚洲日韩日本中文在线| 亚洲日韩精品欧美中文字幕| 久久精品国产免费观看频道| 欧美亚洲欧美| 国产丰满成熟女性性满足视频| 国产亚洲精久久久久久无码AV | 成年网址网站在线观看| 国产免费久久精品99re丫丫一| 免费人欧美成又黄又爽的视频| 激情六月丁香婷婷四房播| 再看日本中文字幕在线观看| 亚洲视频三级|