Lectura de Códigos QR con pyzbar en Python

Lectura de Códigos QR con pyzbar en Python

Los códigos QR son una forma de almacenamiento de información que se utilizan en una amplia gama de aplicaciones, como marketing, logística y comercio. Pueden contener una gran cantidad de datos, como direcciones web, números de teléfono, mensajes de texto, etc.

En este tutorial, aprenderemos a leer códigos QR con la librería pyzbar en Python. pyzbar es una librería de código abierto que proporciona una API simple para detectar y decodificar códigos QR.

Requisitos

Para seguir este tutorial, necesitarás los siguientes requisitos:

  • Python 3.6 o superior
  • La librería pyzbar

Instalación

Para instalar pyzbar, ejecuta el siguiente comando en tu terminal:

pip install pyzbar

Ejemplo básico

En el siguiente ejemplo, leeremos un código QR que contiene una dirección web:

Python
import pyzbar

# Cargamos la imagen del código QR
image = cv2.imread("qrcode.png")

# Detectamos los códigos QR en la imagen
decoded = pyzbar.decode(image)

# Accedemos al primer código QR detectado
code = decoded[0]

# Imprimimos la información del código QR
print(code.data)

Este código producirá el siguiente resultado:

https://www.example.com

Decodificando diferentes tipos de códigos QR

pyzbar puede decodificar diferentes tipos de códigos QR, incluidos los códigos QR de texto, los códigos QR de URL, los códigos QR de correo electrónico, los códigos QR de vCard y los códigos QR de geolocalización.

Para obtener más información sobre los diferentes tipos de códigos QR que puede decodificar pyzbar, consulta la documentación de la librería.

Leyendo códigos QR en tiempo real

También podemos utilizar pyzbar para leer códigos QR en tiempo real. Para ello, utilizaremos la librería OpenCV para capturar imágenes de la cámara web.

En el siguiente ejemplo, leeremos un código QR que se muestra en la cámara web:

Python
import cv2
import pyzbar

# Iniciamos la captura de la cámara web
cap = cv2.VideoCapture(0)

while True:
    # Capturamos una imagen de la cámara web
    ret, frame = cap.read()

    # Detectamos los códigos QR en la imagen
    decoded = pyzbar.decode(frame)

    # Accedemos al primer código QR detectado
    code = decoded[0]

    # Imprimimos la información del código QR
    if code:
        print(code.data)

    # Mostramos la imagen en la pantalla
    cv2.imshow("Imagen", frame)

    # Esperamos a que se pulse una tecla
    key = cv2.waitKey(1)

    # Si se pulsa la tecla "q", salimos del bucle
    if key == ord("q"):
        break

# Liberamos la cámara web
cap.release()

# Cerramos la ventana de la imagen
cv2.destroyAllWindows()

Este código producirá el siguiente resultado:

https://www.example.com

Conclusión

En este tutorial, hemos aprendido a leer códigos QR con la librería pyzbar en Python. pyzbar es una librería sencilla y potente que nos permite leer códigos QR de forma rápida y eficiente.

Para obtener más información sobre pyzbar, consulta la documentación de la librería.