目錄
1、一維碼識別
2、二維碼識別
條形碼(Barcode)是將寬度不等的多個黑條和空白,按照一定的編碼規則排列,用以表達一組資訊的圖形識別符號,常見的條形碼是由反射率相差很大的黑條(簡稱條)和白條(簡稱空)排成的平行線圖案,條形碼可以標出物品的生產國、制造廠家、商品名稱等許多資訊,因而在商品流通、圖書管理、郵政管理、銀行系統等許多領域都得到廣泛的應用,
條形碼可分一維和二維兩大類,一維碼將寬度不等的多個黑條和空白按照一定的編碼規則排列,用來表示一組資訊,常見的一維碼是由反射率相差很大的黑條和白條排成的平行線圖案,如下所示:

一維碼識別效果視頻如下所示:
二維碼包括堆疊式條碼和矩陣式條碼兩大類,堆疊式條碼通過對多個一維碼堆疊構成,矩陣式條碼則使用黑白矩形圖案表示資料,如下所示:

二維碼識別效果視頻如下所示:
條碼具有成本低、靈活易用、使用效率高和可靠性強等優點,條碼制作僅僅需要印刷,識別設備的構造也很簡單,與其他自動化識別技術相比,成本相當低廉,條碼符號可以手工鍵盤輸入,條碼識別設備操作簡易,也可以和有關設備組成識別系統實作自動化識別,或者和其他控制設備聯系起來實作整個系統的自動化管理,條碼的讀取準確率遠遠超過人工方式,平均每15 000個字符才會出現一個錯誤,此外,條碼的讀取速度很快相當于每秒40個字符,
1、一維碼識別
一維碼將多個寬度不同的豎直黑色條紋(Bar)和空白(Space)按一定的規則排列來表示資訊,下圖顯示了一維碼的結構示意圖:

其中,條碼的空白區在左、右兩端,一般來說它必須是窄條寬度的10倍以上,如果邊緣寬度不夠,條碼讀取器就無法對其資料進行掃描,起止符是用于表示資料開始和結束的字符,它根據條碼型別不同而不同,有些采用A、B和D,有些則采用*,資料部分包括資訊字符的條碼圖案,資訊字符可以是數字、字母或其他特殊字符,校驗位用于和讀取值中計算得到的資料進行比較,以校驗讀取值是否有錯,一般直接附在資料資訊后,一維碼可由兩種或多種寬度的條紋和空白構成,編碼時條紋和空白區域可以被離散或連續使用,
Nl Vision為一維碼的讀取提供了專門的函式IMAQ Read Barcode 2,它封裝了對條碼的復雜解碼程序,該函式位于LabVIEW的視覺與運動→Machine Vision→Instrument Readers函式選板中,如下圖所示:

函式說明及使用可參見幫助手冊:

函式IMAQ Read Barcode 2可支持下表列出的各種型別的條碼,

由于交錯式Code25碼、Code39碼和Code93碼并無校驗位,因此在讀取這幾類條碼時,可以關閉該函式的校驗引數,此外,Pharmacode較為簡單,其他條碼極容易被誤讀為此類條碼,因此在使用IMAQ Read Barcode 2函式讀取其他型別的條碼時,一般要禁用它對Pharmacode的支持功能,
條碼影像的解析度、亮度漂移、條紋的灰度一致性和噪聲是影響IMAQ Read Barcode2讀取結果的幾個主要因素,條碼影像的解析度由條紋和空白區域的最小寬度來決定,一般來說它們的寬度不得少于3個像素才能被正確讀取,影像的亮度漂移太大時也會影響讀取結果的正確性,
通過一個一維碼讀取實體,了解一維碼的應用方法,程式設計思路如下所示:
- While回圈中的代碼會逐一讀取保存在Barcode檔案夾中的各個影像,然后使用IMAQ Read Barcode 2從影像中搜索各類條碼的位置,并對它們進行解碼;
- 讀取程序結束后,For回圈中的代碼會對條碼的結果進行決議,并將條碼的邊界矩形、條碼資訊和型別以疊加圖層或陣列的方式顯示到界面上,
程式實作如下所示:

程式運行效果如下所示:

專案資源下載:https://download.csdn.net/download/m0_38106923/20675336
2、二維碼識別
二維碼是對堆疊式條碼和矩陣式條碼的統稱,堆疊式條碼通過堆疊多個一維條碼構成,矩陣式條碼則在一個矩形空間內通過黑白圖案的不同分布對資料進行編碼,如下圖所示:

一維碼僅使用一個方向上的條紋寬度代表資料,通常最多包含30個字符,二維碼在水平和垂直方向上都包含資料,最多可包含3000個字符,當資料量相同時,二維碼的尺寸要比一維碼小很多,因此它可印刷在空間有限的電子產品和其他小部件上,此外,矩陣式二維碼還引入了位置定位和容錯機制,不僅可使用方框、L形框或專門的定位圖案可靠地探測條碼位置,還能在條碼有損的情況下(如有污漬)正確還原資訊,
下圖顯示了QR碼的典型結構示意圖,可以看出QR碼是一種典型的矩陣式二維碼主要由以下幾個部分構成:
- 空白區域(Quiet Zone);
- 3個定位標識(Finder Pattern) ;
- 對準標志(Alignment Pattern);
- 定時標識(Timing Pattern) ;
- 黑色和白色資料單元(Data Cell)和糾錯碼(Error Check and Correction Cell);
- 用于解碼的格式資訊(Formatting Information)等,

QR碼是矩陣式二維碼的一種,其尺寸可包含21×21到177×177個資料單元,由于其右下角有對準標志,其他3個角上有定位標志,因此可以從QR碼的任一方向對其進行快速讀取,QR碼內置了錯誤檢查和糾正(ECC)機制,它可以通過標準Reed-Solomon方案對污點、脫墨和資料丟失等條碼損壞按照4種不同糾錯級別(L、M、Q、H)進行恢復如下圖所示,資料的恢復率隨著所選的糾錯級別不同各異(L級為7%、M級為15%、Q級為25%、H級為30%),

通過一個QR碼讀取的實體,了解二維碼的應用方法,程式設計思路如下所示:
- 程式代碼結構比較簡單,在將包含QR碼的影像讀入記憶體后,就直接呼叫位于LabVIEW的視覺與運動→Machine Vision→Instrument Readers函式選板中的IMAQ Read QR Code函式,從影像中搜索單個或多個QR碼并對其進行解碼,
- 程式還通過記錄讀取前后的時間值來計算QR碼搜索和讀取程序的耗時,最后在影像中用無損圖層標出QR碼所在位置,并顯示影像,
程式實作如下所示:

程式運行效果如下所示:

專案資源下載: https://download.csdn.net/download/m0_38106923/20675406
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/292455.html
標籤:其他
上一篇:OpenCV-最值計算cv::minMaxIdx&cv::minMaxLoc
下一篇:輸入一個URL后發生了什么?
