【Halcon學(xué)習(xí)筆記】12.二維條形碼檢測(cè)
1. 概述
????????條形碼是由一組規(guī)則排列的條,空以及對(duì)應(yīng)的字符組成的標(biāo)記,“條”指的對(duì)光線反射率較低的部分,“空”指對(duì)光線反射率高的部分,這些條和空組成的數(shù)據(jù)可以表達(dá)一定的信息,能夠用特定的設(shè)備識(shí)別讀取,并轉(zhuǎn)換成與計(jì)算機(jī)兼容的二進(jìn)制/十進(jìn)制信息。
????????條形碼主要分為一維條形碼和二維條形碼。二維條形碼在水平和豎直方向的二維空間存儲(chǔ)信息,于一維條形碼相比,具有信息容量大、安全性強(qiáng)、保密性強(qiáng)、識(shí)別率高、編碼范圍廣等特點(diǎn)。此外,二維條形碼還可編碼處理漢字、圖像等信息。

1.1 二維碼分類
1)堆疊式二維碼
????????在一維條形碼的基礎(chǔ)上,將多個(gè)條形碼堆積在一起進(jìn)行編碼,常見的編碼如PDF417等。

2)矩陣式二維碼
????????在一個(gè)矩陣空間中通過(guò)黑色和白色的方塊進(jìn)行信息的表示,黑色的方塊表示1,白色的方塊表示0,相應(yīng)的組合表示了一系列的信息,如QR等。

1.2 二維碼結(jié)構(gòu)
????????以QR二維碼為例,該二維碼通常包含了位置探測(cè)圖形、位置探測(cè)圖形分隔符、定位圖形、校正圖形、格式信息、版本信息、數(shù)據(jù)和糾錯(cuò)碼字等要素。

2.相關(guān)算子
2.1 創(chuàng)建(創(chuàng)建二維條形碼閱讀器的模型)
1)create_bar_code_model()
????????SymbolType:二維碼類型
? ?
????????????????Data Matrix ECC 200
? ?
? ? ????????????QR Code
? ?
? ? ????????????Micro QR Code
? ?
? ? ????????????PDF417
? ?
? ? ????????????Aztec Code
? ?
????????????????DotCode
? ?
????????????????GS1 DataMatrix
? ?
????????????????GS1 QR Code
?
?????????????????GS1 Aztec
?
????????????????GS1 DotCode ? ?
????????GenParamNames:通用參數(shù)的名稱?
????????GenParamValues:通用參數(shù)的設(shè)置值?
????????DataCodeHandle:二維碼模型句柄
2.2 設(shè)置/獲取
1)set_data_code_2d_param()(設(shè)置條形碼模型參數(shù))
2)get_data_code_2d_param()(獲取條形碼模型參數(shù))
????????BarCodeHandle:條形碼模板句柄
????????GenParamNames:可選參數(shù)名稱? ??
????????????????persistence:是否在解碼期間存儲(chǔ)一些中間結(jié)果(獲取解碼掃描線時(shí)需要存儲(chǔ)中間結(jié)果)
? ? ? ? ? ? ? ??? ? ? ?0:不存儲(chǔ)
? ? ? ? ? ? ? ??? ? ? ?1:存儲(chǔ)
????????????????default_parameters:將所有模型參數(shù)重置為標(biāo)準(zhǔn)、增強(qiáng)或最大三種基本默認(rèn)設(shè)置中的一種
????????????????????????standard_recognition:標(biāo)準(zhǔn)
? ? ? ? ? ? ? ? ? ? ? ?enhanced_recognition:增強(qiáng)
? ? ? ? ? ? ? ? ? ? ? ??maximum_recognition:最大
? ??????????????polarity:二維碼極性
????????????????????????dark_on_light:黑碼
????????????????????????light_on_dark:白碼
? ??????????????contrast_min:對(duì)比度
? ? ????????????contrast_tolerance:對(duì)局部對(duì)比度變化的容忍度
????????????????finder_pattern_tolerance:對(duì)缺陷/遮擋的容忍度
????????????????timeout:解碼超時(shí)時(shí)間
? ? ? ? ? ? ? ? ...
? ? ? ? GenParamValues:可選參數(shù)設(shè)置值
2.3?檢測(cè)(檢測(cè)和讀取圖像中的條形碼符號(hào))
1)find_data_code_2d()?
????????Image:輸入的圖像
????????SymbolXLDs:被成功解碼的二維碼周邊的XLD輪廓
????????DataCodeHandle:二維碼模型句柄
????????GenParamName:可設(shè)置的通用參數(shù)的名稱? ? ?
????????????stop_after_result_num:需要檢測(cè)條碼的最大數(shù)量
? ? ? ? ? ? ? ? ...
???????????GenParamValue:可設(shè)置通用參數(shù)的設(shè)置值
????????ResultHandles:所有成功解碼二維碼句柄
????????DecodedDataStrings:解碼的數(shù)據(jù)串結(jié)果
2.4?獲取
1)get_data_code_2d_results()
(獲取解讀條形碼標(biāo)志時(shí)計(jì)算得到的結(jié)果)
????????DataCodeHandle:二維碼模型句柄?
????????CandidateHandle:二維模型候選句柄類型
????????????????general:不引用特定候選句柄
????????????all_candidates:所有候選句柄?
????????????all_results:成功解碼的句柄
????????????all_undecoded:被檢測(cè)為 2D 數(shù)據(jù)代碼符號(hào),但無(wú)法解碼的句柄
????????????all_aborted:不能被識(shí)別為有效的數(shù)據(jù)代碼符號(hào)并且處理被中止的句柄
????????ResultNames:結(jié)果的名稱? ? ? ??
????????????????result_num:成功解碼的符號(hào)數(shù)量
????????????????candidate_num:解碼候選的符號(hào)數(shù)量
? ? ????????????undecoded_num:識(shí)別為符號(hào)但無(wú)法解碼的符號(hào)數(shù)量
? ? ????????????aborted_num:不能被識(shí)別為有效的數(shù)據(jù)代碼的符號(hào)數(shù)量
? ? ????????????min_search_level:金字塔最低層數(shù)
? ? ????????????max_search_level:金字塔最高層數(shù)
? ? ? ? ? ? ? ? status:解碼的詳細(xì)情況
? ? ? ? ? ? ? ? ...
? ? ? ? ResultValues:返回值
2.5 釋放(釋放條形碼閱讀器的模型)
1)clear_data_code_2d_model()?
????????DataCodeHandle:二維碼模型句柄
3.二維碼檢測(cè)在Halcon中的應(yīng)用步驟?
1)創(chuàng)建二維碼閱讀器模板
2)設(shè)置二維碼閱讀器模板參數(shù)
3)檢測(cè)和讀取圖像中的二維碼符號(hào)
4)?獲取解讀二維碼標(biāo)志時(shí)計(jì)算得到的結(jié)果




by Ryou2-