国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python 的二維碼生成與識(shí)別

2020-08-11 09:19管小衛(wèi)
科學(xué)技術(shù)創(chuàng)新 2020年25期
關(guān)鍵詞:條碼校正代碼

管小衛(wèi)

(江蘇財(cái)經(jīng)職業(yè)技術(shù)學(xué)院,江蘇 淮安223003)

1 二維碼概述

二維碼(2-dimensional bar code)又稱二維條碼,是用某種特定的幾何圖形按一定規(guī)律在平面(二維方向上)分布的黑白相間的圖形記錄數(shù)據(jù)符號(hào)信息的。在代碼編制上巧妙地利用構(gòu)成計(jì)算機(jī)內(nèi)部邏輯基礎(chǔ)的“0”、“1”比特流的概念,使用若干個(gè)與二進(jìn)制相對(duì)應(yīng)的幾何形體來表示文字?jǐn)?shù)值信息,通過圖象輸入設(shè)備或光電掃描設(shè)備自動(dòng)識(shí)讀以實(shí)現(xiàn)信息自動(dòng)處理。我們常說的二維碼為QR Code,QR 全稱Quick Response,是一個(gè)近幾年來移動(dòng)設(shè)備上超流行的一種編碼方式,它比傳統(tǒng)的Bar Code 條形碼能存更多的信息,也能表示更多的數(shù)據(jù)類型。QR code 是一種矩陣式二維條碼(又稱棋盤式二維條碼)。它是在一個(gè)矩形空間通過黑、白像素在矩陣中的不同分布進(jìn)行編碼。在矩陣相應(yīng)元素位置上,用點(diǎn)(方點(diǎn)、圓點(diǎn)或其他形狀)的出現(xiàn)表示二進(jìn)制“1”,點(diǎn)的不出現(xiàn)表示二進(jìn)制的“0”,點(diǎn)的排列組合確定了矩陣式二維條碼所代表的意義。

2 二維碼的結(jié)構(gòu)

我們的目的是要使用Python 生成QR 碼,那我們需要先了解二維碼(QR 碼)的結(jié)構(gòu)。根據(jù)標(biāo)準(zhǔn)(ISO/IEC 18004),我們可以了解到QR 碼結(jié)構(gòu)如圖1 所示。

圖1 QR 碼結(jié)構(gòu)圖

2.1 功能圖形

功能圖形是不參與編碼數(shù)據(jù)的區(qū)域。它包含空白區(qū)、位置探測圖形、位置探測圖形分隔符、定位圖形、校正圖形五大模塊。

空白區(qū):空白區(qū)顧名思義就是要留空白。因此,這里不能有任何圖樣或標(biāo)記,這樣才能保證QR 能被識(shí)別。

位置探測圖形:這個(gè)有點(diǎn)類似中文的“回”字。在QR 碼中有個(gè)這樣的標(biāo)識(shí),它分別位于左上、右上和左下角,作用是協(xié)助掃描軟件定位QR 碼并轉(zhuǎn)換坐標(biāo)系。我們?cè)趻呙瓒S碼的時(shí)候,不管是豎著掃、橫著掃、斜著掃都能識(shí)別出內(nèi)容,主要是它的功勞。

位置探測圖形分隔符:主要作用是區(qū)分功能圖形和編碼區(qū)域。

定位圖形:它由黑白間隔的格子組成的線條,主要用于指示標(biāo)識(shí)密度和確定坐標(biāo)系。原因是QR 碼一共有40 個(gè)版本,也就是說有40 種尺寸。每種二維碼的尺寸越大,掃描的距離就越遠(yuǎn)。

校正圖形:只有Version 2 及以上的QR 碼有校正標(biāo)識(shí),校正標(biāo)識(shí)用于進(jìn)一步校正坐標(biāo)系。

2.2 編碼區(qū)域

編碼區(qū)域是數(shù)據(jù)進(jìn)行編碼存儲(chǔ)的區(qū)域,它由格式信息、版本信息、數(shù)據(jù)和糾錯(cuò)碼字三部分構(gòu)成。

格式信息:所有尺寸的二維碼都有該信息。它存放一些格式化數(shù)據(jù)的信息,例如容錯(cuò)級(jí)別、數(shù)據(jù)掩碼,和額外的自身 BCH容錯(cuò)碼。

版本信息:版本信息是規(guī)定二維碼的規(guī)格。前面講到QR 碼一共有40 種規(guī)格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號(hào)比前一版本的每邊增加4個(gè)模塊。

數(shù)據(jù)和糾錯(cuò)碼:主要是存儲(chǔ)實(shí)際數(shù)據(jù)以及用于糾錯(cuò)碼字。

3 使用Python 生成二維碼

首先需要使用pip 命令安裝pillow 、numpy 和matplotlib庫,然后再安裝二維碼庫qrcode ,該庫是用于生成二維碼圖像的Python 第三方庫。qrcode 運(yùn)行在Python 3 版本上,利用該庫能生成多種二維碼圖片:如普通二維碼、高級(jí)二維碼以及帶logo的二維碼等。

3.1 普通二維碼的生成

例如,生成指向百度的二維碼,用戶掃描后會(huì)訪問百度首頁。代碼如下:

生成二維碼如圖2 所示,通過手機(jī)掃一掃二維碼就跳轉(zhuǎn)到百度首頁。

圖2 普通二維碼

3.2 高級(jí)二維碼的生成

設(shè)置二維碼顏色、大小等參數(shù),實(shí)例化參數(shù)含義如下:

代碼如下:

生成二維碼如圖3 所示。

圖3 高級(jí)二維碼

3.3 生成帶logo 的二維碼

生成帶logo 的二維碼的過程基本與普通二維碼生成過程相似,其主要的功能就是對(duì)logo 圖片進(jìn)行處理,調(diào)整logo 的尺寸使其符合所需的大小,然后通過paste 方法將其粘貼到二維碼的中心位置。示例代碼如下:

生成二維碼如圖4 所示。

圖4 帶log 的二維碼

Table 1

4 使用zxing 識(shí)別二維碼

在python 下二維碼識(shí)別,目前主要有三個(gè)模塊:zbar 、zbarlight、zxing。zxing 比zbarlight(zbar)的識(shí)別能力稍強(qiáng)。使用pip命令安裝zxing 庫。代碼如下:

通過使用微信掃一掃功能,可以快速識(shí)別出二維碼中的內(nèi)容。

5 結(jié)論

本文主要探討了基于Python 的二維碼生成與識(shí)別技術(shù),通過qrcode 庫和zxing 庫來生成和識(shí)別二維碼可知:(1)二維碼本質(zhì)是圖形,可以使用數(shù)字圖像技術(shù)來處理。(2)使用qrcode 庫可以生成不同類型二維碼,它們的處理方式也相似,還可以在此基礎(chǔ)上進(jìn)一步擴(kuò)展,生成更加炫酷的動(dòng)態(tài)二維碼圖案。(3)二維碼具有一定的存儲(chǔ)能力,在讀取信息過程中,可以執(zhí)行一定的解釋性代碼實(shí)現(xiàn)跳轉(zhuǎn),因此存在一定的風(fēng)險(xiǎn)。(4)使用zxing 庫比zbarlight 庫、zbar 庫識(shí)別效果好。

猜你喜歡
條碼校正代碼
熱線互動(dòng)
淺析影響商品條碼質(zhì)量的主要因素
劉光第《南旋記》校正
日雜商品條碼質(zhì)量現(xiàn)狀研究
建立在校正系統(tǒng)上的強(qiáng)大實(shí)力Sonance所能士i12
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
創(chuàng)世代碼
在Lightroom中校正鏡頭與透視畸變