- Requisitos
- Instalación de OpenCV en Raspberry Pi
- Instalación de otros paquetes necesarios
- Configuración del hardware del lector de códigos QR de Raspberry pi
- Código Python para lector de códigos QR Raspberry Pi
- Prueba del escáner de código QR Raspberry Pi
El código QR (código de respuesta rápida) es un tipo de código de barras de matriz que contiene información sobre el elemento al que está adjunto, como datos de ubicación, identificador o un rastreador que identifica un sitio web o aplicación, etc. Es un dispositivo óptico legible por máquina etiqueta que tiene la forma de una imagen 2D y un patrón diferente. Para obtener más información sobre los códigos QR y cómo generar un código QR, siga nuestro tutorial anterior.
En este tutorial, vamos a construir un escáner de código QR basado en Raspberry Pi usando la biblioteca OpenCV y ZBar. ZBar es la mejor biblioteca para detectar y decodificar los diferentes tipos de códigos de barras y códigos QR. OpenCV se usa para tomar un nuevo fotograma de una transmisión de video y procesarlo. Una vez que OpenCV captura un fotograma, podemos pasarlo a una biblioteca de decodificación de códigos de barras Python dedicada, como ZBar, que decodifica el código de barras y lo convierte en la información respectiva.
Requisitos
- Raspberry Pi 3 (cualquier versión)
- Módulo de cámara Pi
Antes de continuar con este escáner de código QR Raspberry Pi 3, primero, necesitamos instalar OpenCV, la biblioteca de decodificación de códigos de barras ZBar, imutils y algunas otras dependencias en este proyecto. OpenCV se utiliza aquí para el procesamiento de imágenes digitales. Las aplicaciones más comunes del procesamiento de imágenes digitales son la detección de objetos, el reconocimiento facial y el contador de personas.
Instalación de OpenCV en Raspberry Pi
Aquí se utilizará la biblioteca OpenCV para el escáner QR Raspberry Pi. Para instalar OpenCV, primero actualice la Raspberry Pi.
sudo apt-get update
Luego instale las dependencias requeridas para instalar OpenCV en su Raspberry Pi.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –Y sudo apt-get install libqt4-test –y
Después de eso, instale OpenCV en Raspberry Pi usando el siguiente comando.
pip3 instalar opencv-contrib-python == 4.1.0.25
Anteriormente usamos OpenCV con Raspberry pi y creamos muchos tutoriales sobre él.
- Instalación de OpenCV en Raspberry Pi usando CMake
- Reconocimiento facial en tiempo real con Raspberry Pi y OpenCV
- Reconocimiento de matrículas mediante Raspberry Pi y OpenCV
- Estimación del tamaño de la multitud con OpenCV y Raspberry Pi
También hemos creado una serie de tutoriales de OpenCV a partir del nivel principiante.
Instalación de otros paquetes necesarios
Instalación de ZBar
Zbar es la mejor biblioteca para detectar y decodificar los diferentes tipos de códigos de barras y códigos QR. Utilice el siguiente comando para instalar la biblioteca:
pip3 instalar pyzbar
Instalación de imutils
imutils se utiliza para facilitar las funciones esenciales de procesamiento de imágenes, como la traducción, rotación, cambio de tamaño, esqueletización y visualización de imágenes Matplotlib con OpenCV. Utilice el siguiente comando para instalar imutils:
pip3 instalar imutils
Instalando argparse
Utilice el siguiente comando para instalar la biblioteca argparse. argparse es responsable de analizar los argumentos de la línea de comandos.
pip3 instalar argparse
Configuración del hardware del lector de códigos QR de Raspberry pi
Aquí solo requerimos la cámara Raspberry Pi y Pi para este escáner de código QR con la cámara Raspberry Pi y solo necesita conectar el conector de cinta de la cámara en la ranura de la cámara que se proporciona en la Raspberry pi
La cámara Pi se puede usar para construir varios proyectos interesantes como la cámara de vigilancia Raspberry Pi, el sistema de monitoreo de visitantes, el sistema de seguridad para el hogar, etc.
Código Python para lector de códigos QR Raspberry Pi
El código completo para el lector QR de Raspberry Pi se encuentra al final de la página. Antes de programar la Raspberry Pi, entendamos el código.
Entonces, como de costumbre, inicie el código importando todos los paquetes requeridos.
desde imutils.video importar VideoStream desde pyzbar importar pyzbar importar argparse importar fecha y hora importar imutils importar tiempo importar cv2
Luego construya el analizador de argumentos y analice los argumentos. El argumento de la línea de comandos contiene información sobre la ruta del archivo CSV. El archivo CSV (valores separados por comas) contiene la marca de tiempo y la carga útil de cada código de barras de nuestra transmisión de video.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "ruta de salida del archivo CSV que contiene códigos de barras") args = vars (ap.parse_args ())
Después de eso, inicialice la transmisión de video y descomente la línea comentada si está usando una cámara web USB.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () tiempo.sleep (2.0)
Ahora, dentro del bucle, tome un fotograma de la transmisión de video y cambie su tamaño a 400 píxeles. Una vez que tome el marco, llame a la función pyzbar.decode para detectar y decodificar el código QR.
frame = vsread () frame = imutils.resize (frame, width = 400) códigos de barras = pyzbar.decode (frame)
Ahora, recorra los códigos de barras detectados para extraer la ubicación del código de barras y dibuje el cuadro delimitador alrededor del código de barras en la imagen.
para códigos de barras en códigos de barras: (x, y, w, h) = código de barras.rect cv2.rectangle (marco, (x, y), (x + w, y + h), (0, 0, 255), 2)
Luego decodifique el código de barras detectado en una cadena "utf-8" usando la función decode ("utf-8") y luego extraiga el tipo de código de barras usando la función barcode.type.
barcodeData = barcode.data.decode ("utf-8") barcodeType = código de barras.type
Después de eso, guarde los datos extraídos del código de barras y el tipo de código de barras dentro de una variable llamada texto, y dibuje los datos del código de barras y escriba en la imagen.
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (marco, texto, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
Ahora muestre la salida con los datos del código de barras y el tipo de código de barras.
cv2.imshow ("Lector de código de barras", marco)
Ahora, en el último paso, verifique si la tecla 's' está presionada, luego rompa el ciclo principal e inicie el proceso de limpieza.
key = cv2.waitKey (1) & 0xFF # si se presiona la tecla `s`, salga del bucle si key == ord (" s "): break print (" limpiando… ") csv.close () cv2.destroyAllWindows () frente a detener ()
Prueba del escáner de código QR Raspberry Pi
Una vez que su configuración esté lista, inicie el programa lector de códigos QR. Verá una ventana que muestra una vista en vivo desde su cámara, ahora puede presentar códigos de barras frente a la cámara PI. Cuando pi decodifica un código de barras, dibujará un cuadro rojo a su alrededor con datos de código de barras y tipo de código de barras como se muestra en la imagen de abajo:
Así es como puede construir fácilmente un lector de códigos QR de cámara Raspberry Pi con solo usar la placa Raspberry Pi y la cámara Pi o la cámara USB.
A continuación se muestra un video de trabajo y el código completo para este proyecto.