聊聊qrcode的detect position

本文主要介紹下qrcode的detect position,也就是定位圖案,用於定位一張圖片中二維碼所處的位置。php

qrcode分類

QRCode 分爲 Model 一、Model 二、Micro QR 三類:html

  • Model 1 :是 Model 2 和 Micro QR 的原型,從Version 1 到 Version 14 共14種尺寸。
  • Model 2 :是 Model 1 的改良版本,添加了對齊標記,從Version 1 到 Version 40 共40種尺寸。
  • Micro QR :只有一個定位標記,最小尺寸是 11*11 modules 。

    這裏默認model 2shell

version

qrcode有個Version的概念,不一樣的version對應不一樣的尺寸大小。其公式以下:bash

Version對應的矩陣邊長 = (V-1)*4 + 21複製代碼

Version 1是21 x 21的矩陣,Version 2是 25 x 25的矩陣,Version 3是29的尺寸,每增長一個version,就會增長4的尺寸。
最高Version 40,(40-1)*4+21 = 177,因此最高是177 x 177 的矩陣。學習

qrcode原始byteMatrix實例

內容爲hello world,version爲2,qrcode矩陣爲25 x 25spa

1 1 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1
 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1
 1 0 1 1 1 0 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 1 1 0 1
 1 0 1 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 1 0 1
 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1
 1 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1
 1 1 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 1
 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0
 0 0 1 1 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 1 0 0 1 1 1
 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 1 1 0 1 1 0 0 0 1
 0 1 1 0 0 0 1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 1 0 0
 0 1 0 0 0 0 0 1 1 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0
 0 0 0 0 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1
 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0
 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0 0
 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1
 1 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 1
 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 0 0 1
 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 1 1
 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0
 1 0 1 1 1 0 1 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0
 1 0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1
 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 0 1
 1 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 1 0
 1 1 1 1 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1複製代碼

position detection

1 1 1 1 1 1 1
 1 0 0 0 0 0 1
 1 0 1 1 1 0 1
 1 0 1 1 1 0 1
 1 0 1 1 1 0 1
 1 0 0 0 0 0 1
 1 1 1 1 1 1 1複製代碼

qrcode的定位圖案,標準的3個,左上角、右上角,左下角,邊長爲7.net

Alignment

1 1 1 1 1 
1 0 0 0 1 
1 0 1 0 1 
1 0 0 0 1 
1 1 1 1 1複製代碼

邊長爲5,只有Version 2以上(包括Version2)的qrcode才須要,輔助定位。至少0個,至多6個,根據version不一樣個數不同code

version8的實例以下:
cdn

判斷一個點是否在detect position內

主要判斷x,y座標是否在幾個邊界值內htm

if( (x < 7 && y < 7) //左上角
    || (x < 7 && (y >= height - 7)) //左下角
    || ((x >= width - 7) && y < 7)){ //右上角
    //在detect position以內
}複製代碼

doc

相關文章
相關標籤/搜索