Notes d'étude K210 (10) - Reconnaissance de code QR

avant-propos

Les codes de MAIX BIT (K210) et d'openmv sont courants dans le traitement visuel traditionnel.Maîtriser la reconnaissance des blocs de couleur et la reconnaissance des codes QR de K210 maîtrise également l'utilisation correspondante d'openmv.

1. Qu'est-ce qu'un code QR ?

Un code à barres bidimensionnel (code à barres bidimensionnel) est un graphique en noir et blanc qui est distribué sur un plan (direction bidimensionnelle) selon certaines règles pour enregistrer des informations de symbole de données avec une figure géométrique spécifique. Du point de vue du positionnement du code QR, le code QR est une porte, une fenêtre ou un passage, et ce que nous verrons présentera une autre scène large en le scannant. Allumez le téléphone portable pour numériser et prendre une photo.L'ensemble du processus d'opération ne prend que quelques minutes, voire des dizaines de secondes. Dans la plupart des cas, vous pouvez obtenir les informations que le producteur souhaite vous communiquer en scannant le code QR.
Caractéristiques du code QR :
1. Tolérance d'erreur élevée
Le code bidimensionnel QR a un taux de tolérance d'erreur de 30 %. Par conséquent, même s'il y a une erreur de 30 %, le logiciel de numérisation peut correctement compléter l'interprétation du code QR.

2. Grand contenu d'informations
Le code bidimensionnel QR peut contenir jusqu'à 1850 lettres majuscules ou 2710 chiffres ou 1108 octets, ou plus de 500 caractères chinois, soit des dizaines de fois celui d'un code à barres unidimensionnel. Les textes, sons, images et autres informations courants dans les ordinateurs peuvent être stockés dans des codes QR, et de nombreuses données de langue et d'image peuvent également être facilement complétées avec des codes QR.

3. Attendez... Si vous voulez en savoir plus, cliquez ici .
insérez la description de l'image ici

2. Comment utiliser

1. fonction find_qrcodes()

Dans le module d'image, il existe une méthode pour trouver le code QR. Vous devez utiliser la version du micrologiciel non minimale (cliquez ici pour télécharger) et vous devez préparer un code QR. Vous pouvez utiliser le code QR d'herbe pour générer le contenu que vous souhaitez.

import image, sensor
img=sensor.snapshot()
#从摄像头获取图片,将摄像头对准二维码
res = img.find_qrcodes()
#从图片中查找所有二维码对象(image.qrcode)列表
print(res[0].payload())
#操作二维码对象,例如打印信息

2. Classe QRCode - Fonction d'objet de code QR

Les objets de code QR sont renvoyés par image.find_qrcodes.

fonction illustrer
qrcode.corners() Renvoie une liste de quatre tuples (x,y) constitués des quatre coins de cet objet. Les quatre coins sont généralement retournés dans le sens des aiguilles d'une montre en partant du coin supérieur gauche.
qrcode.rect() Renvoie un tuple rectangle (x, y, w, h) à utiliser dans d'autres méthodes d'image telles que image.draw_rectangle pour la boîte englobante d'un code QR.
qrcode.x() Renvoie la coordonnée x (int) de la boîte englobante du code QR. Cette valeur est également accessible via index[0].
qrcode.y() Renvoie la coordonnée y (int) de la boîte englobante du code QR. Cette valeur peut également être obtenue via l'indice [1].
qrcode.w() Renvoie la coordonnée w (int) de la boîte englobante du code QR. Cette valeur est également accessible via l'index [2].
qrcode.h() Renvoie la coordonnée h (int) de la boîte englobante du code QR. Cette valeur est également accessible via l'index [3].
qrcode.payload() Renvoie une chaîne pour la charge utile du code QR, telle qu'une URL. Cette valeur est également accessible via l'index [4].
qrcode.version() Renvoie le numéro de version du code QR (int). Cette valeur est également accessible via l'index [5].
qrcode.ecc_level() Renvoie le niveau ECC du code QR (int). Cette valeur est également accessible via l'index [6].
qrcode.masque() Renvoie le masque (int) du code QR. Cette valeur est également accessible via l'index [7].
qrcode.data_type() Renvoie le type de données du code QR. Cette valeur est également accessible via l'index [8].
qrcode.eci() Renvoie l'ECI du code QR. L'ECI stocke le codage des octets de données stockés dans le code QR. Vous devez cocher cette valeur si vous souhaitez traiter des codes QR contenant du texte au-delà de l'ASCII standard. Vous pouvez également obtenir cette valeur via l'index [9].
qrcode.is_numeric() Renvoie True si le type de données du code QR est numérique.
qrcode.is_alphanumeric() Renvoie True si le type de données du code QR est alphanumérique.
qrcode.is_binary() Renvoie True si le type de données du code QR est binaire. Si vous voulez vraiment gérer tous les types de texte, vous devrez vérifier si eci est True pour déterminer l'encodage de texte de vos données. Habituellement, il ne s'agit que d'ASCII standard, mais il peut également s'agir d'UTF8 avec des caractères à deux octets.
qrcode.is_kanji() Renvoie True si le type de données du code QR est Kanji. Lorsqu'il est défini sur True, vous devrez décoder la chaîne vous-même, car les symboles Kanji sont de 10 bits par caractère et MicroPython ne prend pas en charge l'analyse de ce texte.

3. MAIX BIT (K210) reconnaît le code QR et communique avec STM32

Générez d'abord un code bidimensionnel avec le code bidimensionnel de fourrage, après que le bit maix l'ait reconnu, encadrez le code bidimensionnel et imprimez les informations reconnues. Avec l'expérience précédente de communication avec le port série stm32, les informations identifiées peuvent être envoyées au stm32 via le port série. (Le programme suivant n'ajoute pas de port série, vous pouvez le cv si besoin)
Programme :

import image
import sensor
import lcd
import time
clock = time.clock()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(0)
lcd.rotation(2)
sensor.skip_frames(30)
while True:
    clock.tick()
    img = sensor.snapshot()
    res = img.find_qrcodes() #识别二维码
    fps =clock.fps()
    if res:
        for b in res:
            tmp=img.draw_rectangle(b[0:4])
            img.draw_string(2,2, res[0].payload(), color=(0,128,0), scale=2)#将二维码框出
            print(res[0].payload())
    lcd.display(img)

résultat courant :

maix bit reconnaît les codes QR

Résumer

La méthode d'utilisation de maix bit pour identifier les codes QR est la même que celle d'openmv. Maintenant, je viens d'apprendre l'utilisation de la reconnaissance de code QR. Si vous voulez en savoir plus, vous devez utiliser la classe QRCode - fonction d'objet de code QR.

Je suppose que tu aimes

Origine blog.csdn.net/Thousand_drive/article/details/124187632
conseillé
Classement