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

主站蜘蛛池模板: 在线毛片免费| 欧美在线一二区| 九九九精品成人免费视频7| 成人av专区精品无码国产| 国产精品大尺度尺度视频| 久久www视频| 91福利在线看| 91精品人妻一区二区| 五月天福利视频| 国产精品视频第一专区| 国产免费高清无需播放器 | 久久semm亚洲国产| 高清久久精品亚洲日韩Av| 成人日韩欧美| 久热这里只有精品6| 黄色不卡视频| 久久青草热| 激情乱人伦| 最新国产你懂的在线网址| 91福利片| 色网在线视频| 国产真实自在自线免费精品| 亚洲三级影院| 欧洲欧美人成免费全部视频| 亚洲无码视频一区二区三区| 精品国产成人a在线观看| 青青青草国产| 制服丝袜国产精品| 99精品在线看| 91精品在线视频观看| 男人天堂亚洲天堂| 91午夜福利在线观看| 狠狠亚洲五月天| 亚洲欧洲日产国产无码AV| 91成人在线免费观看| 五月天天天色| a毛片基地免费大全| 久久久久久久久亚洲精品| 玖玖精品视频在线观看| Jizz国产色系免费| 日韩精品一区二区三区大桥未久| 亚洲免费黄色网| 国产97视频在线| 亚洲人成亚洲精品| 67194在线午夜亚洲| 91视频国产高清| 亚洲男人在线| 高清无码手机在线观看| 亚洲美女久久| 国产视频一区二区在线观看| 日本欧美精品| 精品久久久无码专区中文字幕| 亚洲欧美在线综合图区| 成人字幕网视频在线观看| 老司机久久99久久精品播放 | 欧美成人看片一区二区三区| 亚洲中文字幕在线一区播放| 色吊丝av中文字幕| 99精品福利视频| 亚洲综合色在线| 日韩在线播放中文字幕| 麻豆精品在线视频| 日本高清有码人妻| m男亚洲一区中文字幕| 色男人的天堂久久综合| 国产一区二区三区精品欧美日韩| 性色一区| 精品国产aⅴ一区二区三区| 亚洲欧美另类日本| 99久视频| 人妻熟妇日韩AV在线播放| 91麻豆国产在线| 特级毛片8级毛片免费观看| 国产二级毛片| 人人91人人澡人人妻人人爽| 日韩不卡免费视频| www亚洲天堂| 欧美成人免费午夜全| 色丁丁毛片在线观看| 国产美女精品一区二区| 国产美女一级毛片| 黄色网址手机国内免费在线观看|