如何使用 Python 生成酷炫的二維碼?

如何使用 Python 生成酷炫的二維碼?

1 人贊了文章

新時代,人們有新的追求,自然而然會有新發明的誕生。去年,在「一帶一路」國際合作高峰論壇舉行期間,20 國青年投票選出中國的「新四大發明」:高鐵、掃碼支付、共享單車和網購。其中掃碼支付指手機通過掃描二維碼跳轉到支付頁面,再進行付款。這種新的支付方式,造就二維碼滿天飛的現象。

那麼讓我們來扒一扒如何使用 Python 生成二維碼圖片。

二維碼

二維碼(2-dimensional bar code),是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的。它能將數字、英文字母、漢字、日文字母、特殊符號(如空格,%,/ 等)、二進位等信息記錄到一個正方形的圖片中。

因此,在轉換的過程中,離不開編碼壓縮方式。在許多種類的二維條碼中,常用的碼制有:Data Matrix,Maxi Code,Aztec,QR Code,Vericode,PDF417,Ultracode,Code 49,Code 16K等。

二維碼在現實生活中的應用越來與普遍,歸功於 QR code 碼制的流行。我們常說的二維碼就是它,所以,二維碼又被稱為 QR code。

QR code 是一種矩陣式二維條碼(又稱棋盤式二維條碼)。它是在一個矩形空間通過黑、白像素在矩陣中的不同分布進行編碼。在矩陣相應元素位置上,用點(方點、圓點或其他形狀)的出現表示二進位「1」,點的不出現表示二進位的「0」,點的排列組合確定了矩陣式二維條碼所代表的意義。

二維碼結構

我們的目的是要使用 Python 生成 QR 碼,那我們需要先了解二維碼(QR 碼)的結構。

根據標準(ISO/IEC 18004),我們可以了解到 QR 碼結構如下:

圖片來源於網路

1、功能圖形

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

  • 空白區:空白區顧名思義就是要留空白。因此,這裡不能有任何圖樣或標記,這樣才能保證 QR 能被識別。
  • 位置探測圖形:這個有點類似中文的「回」字。在 QR 碼中有個這樣的標識,它分別位於左上、右上和左下角,作用是協助掃描軟體定位 QR 碼並轉換坐標系。我們在掃描二維碼的時候,不管是豎著掃、橫著掃、斜著掃都能識別出內容,主要是它的功勞。
  • 位置探測圖形分隔符:主要作用是區分功能圖形和編碼區域。
  • 定點陣圖形:它由黑白間隔的格子組成的線條,主要用於指示標識密度和確定坐標系。原因是 QR 碼一種有 40 個版本,也就是說有 40 種尺寸。每種二維碼的尺寸越大,掃描的距離就越遠。
  • 校正圖形:只有 Version 2 及以上的QR碼有校正標識,校正標識用於進一步校正坐標系。

2、 編碼區域

編碼區域是數據進行編碼存儲的區域,它由格式信息、版本信息、數據和糾錯碼字三部分構成。

  • 格式信息:所有尺寸的二維碼都有該信息。它存放一些格式化數據的信息,例如容錯級別、數據掩碼,和額外的自身 BCH 容錯碼。
  • 版本信息:版本信息是規定二維碼的規格。前面講到 QR 碼一共有 40 種規格的矩陣(一般為黑白色),從21×21(版本1),到177×177(版本40),每一版本符號比前一版本的每邊增加4個模塊。
  • 數據和糾錯碼:主要是存儲實際數據以及用於糾錯碼字。

全文請查看如何使用 Python 生成酷炫的二維碼?


推薦閱讀:

ETP:精確時序動作定位
[計算機視覺論文速遞] 2018-06-12
[CVPR2018筆記]Semi-parametric Image Synthesis
讀論文系列:Object Detection SPP-net
[論文筆記] 圖像密集標註

TAG:二維碼 | 計算機視覺 | 科技 |