[Diaoye aprende programación] Escaneo de código QR OpenMV Cam manual de MicroPython

Insertar descripción de la imagen aquí
MicroPython es una versión ligera del intérprete diseñada para ejecutar el lenguaje de programación Python 3 en sistemas integrados. En comparación con Python normal, el intérprete de MicroPython es pequeño (solo alrededor de 100 KB) y se compila en un archivo ejecutable binario para su ejecución, lo que resulta en una mayor eficiencia de ejecución. Utiliza un mecanismo de recolección de basura liviano y elimina la mayor parte de la biblioteca estándar de Python para adaptarse a microcontroladores con recursos limitados.

Las características principales de MicroPython incluyen:
1. La sintaxis y las funciones son compatibles con Python estándar, lo que facilita su aprendizaje y uso. Admite la mayor parte de la sintaxis principal de Python.
2. Acceda y controle directamente el hardware, controle GPIO, I2C, SPI, etc. como Arduino.
3. Potente sistema de módulos, que proporciona sistema de archivos, red, interfaz gráfica y otras funciones.
4. Admite compilación cruzada para generar código nativo eficiente, que es entre 10 y 100 veces más rápido que el intérprete.
5. La cantidad de código es pequeña y el uso de memoria es pequeño, adecuado para ejecutarse en MCU y placas de desarrollo con poca memoria.
6. Licencia de código abierto, de uso gratuito. El entorno interactivo de Shell proporciona comodidad para el desarrollo y las pruebas.
7. El controlador de E/S incorporado admite una gran cantidad de plataformas de microcontroladores, como ESP8266, ESP32, STM32, micro:bit, placa de control y PyBoard, etc. Hay una comunidad activa.

Los escenarios de aplicación de MicroPython incluyen:
1. Crear rápidamente prototipos e interacciones de usuario para productos integrados.
2. Realice algunos pequeños proyectos de hardware programables.
3. Como herramienta educativa, ayuda a los principiantes a aprender programación en Python e IoT.
4. Cree firmware para dispositivos inteligentes para lograr control avanzado y conectividad en la nube.
5. Diversas aplicaciones de microcontroladores como Internet de las cosas, inteligencia integrada, robots, etc.

Cosas a tener en cuenta al utilizar MicroPython:
1. La memoria y el espacio Flash son limitados.
2. La eficiencia de explicación y ejecución no es tan buena como la del lenguaje C.
3. Algunas funciones de la biblioteca son diferentes a las de la versión estándar.
4. Optimice la sintaxis de la plataforma y corrija las diferencias con Python estándar.
5. Utilice los recursos de memoria de forma racional y evite asignar grandes bloques de memoria con frecuencia.
6. Utilice código nativo para mejorar el rendimiento de las piezas críticas para la velocidad.
7. Utilice la abstracción de forma adecuada para encapsular las operaciones de hardware subyacentes.

En términos generales, MicroPython lleva Python al campo de los microcontroladores, lo cual es una innovación importante que no solo reduce el umbral de programación sino que también proporciona buenas capacidades de control de hardware. Es muy adecuado para el desarrollo de varios tipos de Internet de las cosas y hardware inteligente.
Insertar descripción de la imagen aquí
OpenMV Cam es una pequeña placa microcontroladora de bajo consumo que le permite implementar fácilmente aplicaciones utilizando visión artificial en el mundo real. Puede programar OpenMV Cam utilizando scripts Python de alto nivel (proporcionados por MicroPython OS) en lugar de C/C++. Los parámetros técnicos de OpenMV Cam incluyen los siguientes aspectos:

1. Procesador: OpenMV Cam H7 Plus utiliza el procesador STM32H743II ARM Cortex M7, que funciona a 480 MHz, con 32 MB de SDRAM + 1 MB de SRAM y 32 MB de memoria flash externa + 2 MB de memoria flash interna. OpenMV Cam M4 V2 utiliza el procesador STM32F427VG ARM Cortex M4 que funciona a 180 MHz con 256 KB de RAM y 1 MB de memoria flash.
2. Sensor de imagen: Tanto OpenMV Cam H7 Plus como OpenMV Cam M4 V2 utilizan el sensor de imagen OV7725, que puede capturar imágenes en escala de grises de 320x240 de 8 bits o imágenes RGB565 de 320x240 de 16 bits a 75 FPS con resoluciones superiores a 320x240. 150 FPS a 320x240.
3. Interfaz de E/S: OpenMV Cam H7 Plus y OpenMV Cam M4 V2 tienen las siguientes interfaces de E/S:
(1) Interfaz USB de velocidad completa (12 Mbs), conectada a la computadora. Cuando la OpenMV Cam esté conectada, aparecerá un puerto COM virtual y una "unidad flash USB" en su computadora.
(2) La ranura para tarjeta μSD tiene capacidad de lectura/escritura de 100 MB, lo que permite que su OpenMV Cam grabe video y extraiga material de visión artificial de la tarjeta μSD.
(3) El bus SPI funciona a una velocidad de hasta 54 Mbs, lo que le permite simplemente transmitir datos de flujo de imágenes a la placa de expansión LCD, placa de expansión WiFi u otros controladores.
(4) Bus I2C (hasta 1 Mb/s), bus CAN (hasta 1 Mb/s) y bus serie asíncrono (TX/RX, hasta 7,5 Mb/s) para conexión con otros controladores o sensores.
(5) Un ADC de 12 bits y un DAC de 12 bits.
(6) Hay interrupciones y PWM en todos los pines de E/S (hay 9 o 10 pines de E/S en la placa).
4. LED: Tanto OpenMV Cam H7 Plus como OpenMV Cam M4 V2 están equipados con un LED RGB (tricolor) y dos LED IR brillantes de 850 nm (infrarrojos).
5. Lente: Tanto OpenMV Cam H7 Plus como OpenMV Cam M4 V2 están equipados con una interfaz de lente M12 estándar y una lente predeterminada de 2,8 mm. Si desea utilizar una lente más profesional con su OpenMV Cam, puede comprarla e instalarla fácilmente usted mismo.

Insertar descripción de la imagen aquí
OpenMV Cam de MicroPython admite la función de escaneo de códigos QR, que puede identificar y decodificar rápidamente códigos QR. Sus características principales, escenarios de aplicación y asuntos que requieren atención se explicarán en detalle a continuación.

caracteristica principal:

Escaneo rápido: OpenMV Cam puede escanear y decodificar rápidamente códigos QR a través del módulo de escáner de códigos QR. Esto permite a los usuarios obtener rápidamente la información del código QR en tiempo real o casi en tiempo real, mejorando la eficiencia del trabajo.

Decodificación de alta precisión: la función de escaneo de códigos QR utiliza procesamiento de imágenes avanzado y algoritmos de visión por computadora para lograr una decodificación de códigos QR de alta precisión. Incluso si la calidad de la imagen es mala, está inclinada o deformada, aún se puede decodificar con precisión.

Interfaz flexible: OpenMV Cam proporciona una interfaz flexible que se puede integrar con otros dispositivos o sistemas. Los usuarios pueden elegir el método de salida adecuado según sus necesidades, como salida de puerto serie, transmisión Wi-Fi, etc., para facilitar el procesamiento posterior o la interacción de datos.

Escenarios de aplicación:

Gestión de logística y almacenamiento: en la gestión de logística y almacenamiento, la función de escaneo de códigos QR se puede utilizar para identificar y rastrear artículos rápidamente. Por ejemplo, puede escanear el código QR del paquete para obtener información relevante del producto, registros de entrada y salida del almacén, etc.

Sistemas de pago y emisión de billetes móviles: los códigos QR se utilizan ampliamente en los sistemas de emisión de billetes y pagos móviles. La función de escaneo de códigos QR de OpenMV Cam se puede utilizar para escanear códigos de pago o boletos electrónicos en la pantalla del teléfono móvil del usuario para lograr un pago rápido y una verificación de admisión.

Configuración y autenticación del dispositivo: la función de escaneo de códigos QR se puede utilizar para la configuración y autenticación del dispositivo. Por ejemplo, puede escanear el código QR en el dispositivo para completar automáticamente la configuración del dispositivo y la conexión de red; o escanear la tarjeta de identificación del usuario o el código QR para verificar rápidamente la información de identidad.

Cosas a tener en cuenta:

Calidad de imagen y luz ambiental: la calidad de imagen y la luz ambiental tienen un mayor impacto en el escaneo de códigos QR. Al utilizar la función de escaneo de códigos QR, debe asegurarse de que la calidad de la imagen sea buena y tratar de evitar factores que distraigan, como luces intensas o sombras.

Distancia y ángulo de escaneo: la distancia y el ángulo en el que se escanea un código QR también afectan la precisión y la velocidad del escaneo. La distancia y el ángulo entre la OpenMV Cam y el código QR deben ajustarse según la situación real para obtener el mejor efecto de escaneo.

Reconocimiento de códigos múltiples y procesamiento tolerante a fallas: en algunos escenarios, pueden existir múltiples códigos QR al mismo tiempo, o el código QR puede estar dañado o borroso, etc. Se debe prestar atención al manejo del reconocimiento de códigos múltiples y a la implementación de cierto procesamiento de tolerancia a fallas para mejorar la estabilidad y solidez del sistema.

Seguridad de los datos y protección de la privacidad: al aplicar el escaneo de códigos QR, debe prestar atención a la seguridad de los datos y la protección de la privacidad. Asegúrese de que la información del código QR escaneado solo se utilice con fines legítimos para evitar fugas y abusos de información.

En resumen, OpenMV Cam de MicroPython logra un rápido reconocimiento y decodificación de códigos QR a través de la función de escaneo de códigos QR. Desempeña un papel importante en escenarios de aplicaciones como la gestión de logística y almacenamiento, sistemas de emisión de billetes y pagos móviles, configuración de dispositivos y autenticación de identidad. Al usarlo, debe prestar atención a la calidad de la imagen y la luz ambiental, la distancia y el ángulo de escaneo, el reconocimiento de códigos múltiples y el procesamiento de tolerancia a fallas, así como la seguridad de los datos y la protección de la privacidad para garantizar la precisión del escaneo y la estabilidad del sistema.

Caso 1: Escanee el código QR y muestre los resultados

import sensor, image, time
from pyb import UART
from pyb import LED
from pyb import Timer
from pyb import ADC

uart = UART(3, 9600) # 初始化串口通信,波特率为9600
lcd = LED(2) # 初始化LCD显示屏,连接到引脚2
timer = Timer() # 初始化定时器
adc = ADC(Pin(34)) # 初始化ADC模块,连接到引脚34

sensor.reset() # 初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 设置像素格式为RGB565
sensor.set_framesize(sensor.QVGA) # 设置帧大小为320x240
sensor.skip_frames(time = 2000) # 等待设置生效,延时2秒

while True:
    img = sensor.snapshot() # 捕获一帧图像
    qrcode = img.find_qrcodes([(18, 32)], area_threshold = 100, pixels_threshold = 100) # 寻找QR码
    if qrcode: # 如果找到QR码
        lcd.display("QR Code detected") # 在LCD上显示"QR Code detected"
        for i in range(len(qrcode)):
            lcd.display(qrcode[i].data) # 在LCD上显示QR码的数据
    else:
        lcd.display("No QR code detected") # 如果没有找到QR码,显示"No QR code detected"
    time.sleep_ms(100) # 延时100毫秒

Interpretación: Este programa primero importa los módulos de sensor, imagen, tiempo, pyb.UART, pyb.LED, pyb.Timer y pyb.ADC. Luego inicialice la comunicación en serie, la pantalla LCD, el temporizador y el módulo ADC. Luego inicialice la cámara, configure el formato de píxeles en RGB565, el tamaño del cuadro en 320x240 y espere a que la configuración surta efecto. En el bucle while, capture continuamente la imagen de la cámara y busque el código QR. Si se encuentra un código QR, se mostrará "Código QR detectado" en la pantalla LCD y los datos del código QR se mostrarán uno por uno; si no se encuentra un código QR, se mostrará "No se detectó ningún código QR". Hay un retraso de 100 milisegundos después de cada visualización.

Caso 2: Escanee varios códigos QR continuamente y muestre los resultados

import sensor, image, time
from pyb import UART
from pyb import LED
from pyb import Timer
from pyb import ADC

uart = UART(3, 9600) # 初始化串口通信,波特率为9600
lcd = LED(2) # 初始化LCD显示屏,连接到引脚2
timer = Timer() # 初始化定时器
adc = ADC(Pin(34)) # 初始化ADC模块,连接到引脚34

sensor.reset() # 初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 设置像素格式为RGB565
sensor.set_framesize(sensor.QVGA) # 设置帧大小为320x240
sensor.skip_frames(time = 2000) # 等待设置生效,延时2秒

while True:
    img = sensor.snapshot() # 捕获一帧图像
    qrcodes = img.find_qrcodes([(18, 32)], area_threshold = 100, pixels_threshold = 100) # 寻找QR码
    if qrcodes: # 如果找到QR码
        for qrcode in qrcodes:
            lcd.display("QR Code detected") # 在LCD上显示"QR Code detected"
            for i in range(len(qrcode)):
                lcd.display(qrcode[i].data) # 在LCD上显示QR码的数据
    else:
        lcd.display("No QR code detected") # 如果没有找到QR码,显示"No QR code detected"
    time.sleep_ms(100) # 延时100毫秒

Interpretación: Este programa es similar al primer caso, excepto que la parte de encontrar el código QR se coloca en un bucle. En cada bucle, primero capture un cuadro de imagen y luego busque el código QR. Si se encuentra un código QR, se mostrará "Código QR detectado" en la pantalla LCD y los datos del código QR se mostrarán uno por uno; si no se encuentra un código QR, se mostrará "No se detectó ningún código QR". Hay un retraso de 100 milisegundos después de cada visualización.

Caso 3: use un temporizador para escanear automáticamente el código QR

import sensor, image, time
from pyb import UART
from pyb import LED
from pyb import Timer
from pyb import ADC

uart = UART(3, 9600) # 初始化串口通信,波特率为9600
lcd = LED(2) # 初始化LCD显示屏,连接到引脚2
timer = Timer() # 初始化定时器
adc = ADC(Pin(34)) # 初始化ADC模块,连接到引脚34

sensor.reset() # 初始化摄像头
sensor.set_pixformat(sensor.RGB565) # 设置像素格式为RGB565
sensor.set_framesize(sensor.QVGA) # 设置帧大小为320x240
sensor.skip_frames(time = 2000) # 等待设置生效,延时2秒

def scan_qrcode():
    img = sensor.snapshot() # 捕获一帧图像
    qrcodes = img.find_qrcodes([(18, 32)], area_threshold = 100, pixels_threshold = 100) # 寻找QR码
    if qrcodes: # 如果找到QR码
        for qrcode in qrcodes:
            lcd.display("QR Code detected") # 在LCD上显示"QR Code detected"
            for i in range(len(qrcode)):
                lcd.display(qrcode[i].data) # 在LCD上显示QR码的数据
    else:
        lcd.display("No QR code detected") # 如果没有找到QR码,显示"No QR code detected"
    time.sleep_ms(100) # 延时100毫秒

while True:
    timer.init(period=1000, mode=Timer.PERIODIC, callback=scan_qrcode) # 初始化定时器,设置扫描周期为1秒,并在每次扫描时调用scan_qrcode函数
    timer.start() # 启动定时器
    time.sleep_ms(1000) # 延时1秒

Interpretación: Este programa es similar a los dos casos anteriores, excepto que la parte de encontrar el código QR se coloca en una función llamada scan_qrcode. En el bucle principal, primero inicialice el temporizador, establezca el período de escaneo en 1 segundo y llame a la función scan_qrcode durante cada escaneo. Luego inicie el cronómetro y espere 1 segundo. En la función scan_qrcode, capture un cuadro de imagen, busque el código QR y muestre la información correspondiente en la pantalla LCD dependiendo de si se encuentra el código QR.

Caso 4: Escanear y decodificar código QR:

import sensor
import image
import time
import lcd

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)

lcd.init()
lcd.rotation(2)

while True:
    img = sensor.snapshot()
    codes = img.find_qrcodes()
    
    if codes:
        for code in codes:
            lcd.draw_string(10, 10, code.payload(), lcd.WHITE, lcd.BLACK)
    
    lcd.display(img)
    time.sleep(100)

Conclusión clave:
este programa utiliza las capacidades de escaneo de códigos QR de OpenMV Cam para detectar y decodificar códigos QR en imágenes capturadas por la cámara.
Utilice sensor.reset() para restablecer el sensor de la cámara.
Utilice sensor.set_pixformat() para configurar el formato de píxeles de la imagen en escala de grises.
Utilice sensor.set_framesize() para establecer el tamaño del marco de la imagen en QVGA (320x240).
Utilice sensor.run(1) para iniciar la cámara.
Utilice lcd.init() para inicializar la pantalla LCD.
Utilice lcd.rotation(2) para configurar el ángulo de rotación de la pantalla LCD.
En un bucle infinito, haga que el programa continúe haciendo lo siguiente:
capture una imagen usando sensor.snapshot() y guárdela en la variable img.
Utilice img.find_qrcodes() para buscar códigos QR en una imagen y devolver una lista de objetos de códigos QR.
Si se encuentra un código QR, utilice code.payload() para obtener el contenido de datos del código QR.
Utilice lcd.draw_string() para dibujar el contenido de datos del código QR en la pantalla LCD.
Utilice lcd.display() para mostrar la imagen capturada y los datos del código QR en la pantalla LCD.
Utilice time.sleep(100) para retrasar un cierto período de tiempo para controlar la velocidad de escaneo.

Caso 5: Escanear e identificar el código QR de un contenido específico:

import sensor
import image
import time
import lcd

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)

lcd.init()
lcd.rotation(2)

TARGET_CONTENT = "Hello, OpenMV!"

while True:
    img = sensor.snapshot()
    codes = img.find_qrcodes()
    
    if codes:
        for code in codes:
            if code.payload() == TARGET_CONTENT:
                lcd.draw_string(10, 10, "QR Code Found!", lcd.WHITE, lcd.BLACK)
    
    lcd.display(img)
    time.sleep(100)

Puntos clave:
este programa utiliza la función de escaneo de códigos QR de OpenMV Cam para detectar e identificar códigos QR para contenido específico en imágenes capturadas por la cámara.
Utilice sensor.reset() para restablecer el sensor de la cámara.
Utilice sensor.set_pixformat() para configurar el formato de píxeles de la imagen en escala de grises.
Utilice sensor.set_framesize() para establecer el tamaño del marco de la imagen en QVGA (320x240).
Utilice sensor.run(1) para iniciar la cámara.
Utilice lcd.init() para inicializar la pantalla LCD.
Utilice lcd.rotation(2) para configurar el ángulo de rotación de la pantalla LCD.

En un bucle infinito, haga que el programa continúe haciendo lo siguiente:
capture una imagen usando sensor.snapshot() y guárdela en la variable img.
Utilice img.find_qrcodes() para buscar códigos QR en una imagen y devolver una lista de objetos de códigos QR.
Si se encuentra un código QR, utilice code.payload() para obtener el contenido de datos del código QR.
Si el contenido de datos del código QR coincide con TARGET_CONTENT, use lcd.draw_string() para dibujar el mensaje "¡Código QR encontrado!" en la pantalla LCD.
Utilice lcd.display() para mostrar la imagen capturada y solicitar información en la pantalla LCD.
Utilice time.sleep(100) para retrasar un cierto período de tiempo para controlar la velocidad de escaneo.

Caso 6: Escanee y marque la ubicación del código QR en la imagen:

import sensor
import image
import time
import lcd

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)

lcd抱歉,这是一个示例代码的中断。以下是完整的示例代码:

```python
import sensor
import image
import time
import lcd

sensor.reset()
sensor.set_pixformat(sensor.GRAYSCALE)
sensor.set_framesize(sensor.QVGA)
sensor.run(1)

lcd.init()
lcd.rotation(2)

while True:
    img = sensor.snapshot()
    codes = img.find_qrcodes()
    
    if codes:
        for code in codes:
            img.draw_rectangle(code.rect(), color=(255, 0, 0), thickness=2)
    
    lcd.display(img)
    time.sleep(100)

Conclusión clave:
este programa utiliza las capacidades de escaneo de códigos QR de OpenMV Cam para detectar y marcar la ubicación del código QR en la imagen capturada por la cámara.
Utilice sensor.reset() para restablecer el sensor de la cámara.
Utilice sensor.set_pixformat() para configurar el formato de píxeles de la imagen en escala de grises.
Utilice sensor.set_framesize() para establecer el tamaño del marco de la imagen en QVGA (320x240).
Utilice sensor.run(1) para iniciar la cámara.
Utilice lcd.init() para inicializar la pantalla LCD.
Utilice lcd.rotation(2) para configurar el ángulo de rotación de la pantalla LCD.

En un bucle infinito, haga que el programa continúe haciendo lo siguiente:
capture una imagen usando sensor.snapshot() y guárdela en la variable img.
Utilice img.find_qrcodes() para buscar códigos QR en una imagen y devolver una lista de objetos de códigos QR.
Si se encuentra un código QR, use code.rect() para obtener la información de ubicación del código QR.
Utilice img.draw_rectangle() para dibujar un cuadro rectangular en la imagen para marcar la ubicación del código QR.
Utilice lcd.display() para mostrar la imagen capturada y la ubicación del código QR marcado en la pantalla LCD.
Utilice time.sleep(100) para retrasar un cierto período de tiempo para controlar la velocidad de escaneo.

Estos ejemplos de aplicaciones prácticas muestran cómo utilizar las capacidades de escaneo de códigos QR de MicroPython y OpenMV Cam. El primer ejemplo demuestra la funcionalidad básica de escanear y decodificar un código QR. El segundo ejemplo muestra cómo identificar un código QR para contenido específico. El tercer ejemplo muestra cómo marcar la ubicación de un código QR en una imagen. Estos ejemplos pueden ayudarle a comprender cómo utilizar las capacidades de escaneo de códigos QR para implementar diversas aplicaciones, como el reconocimiento de códigos QR, el seguimiento de artículos y la identificación automática.

Caso 7: Programa simple de escaneo de códigos QR

import sensor, image, time  
  
sensor.reset() # 初始化摄像头  
sensor.set_pixformat(sensor.RGB565) # 设置像素格式  
sensor.set_framesize(sensor.QVGA) # 设置帧大小  
sensor.skip_frames(time = 2000) # 等待摄像头稳定  
  
while(True):  
    img = sensor.snapshot() # 拍摄照片  
    res = img.find_qrcodes() # 查找QR码  
    if len(res) > 0: # 如果找到了QR码  
        print(res[0].data.decode("utf-8")) # 打印QR码内容

Interpretación de los puntos clave:
primero importe los módulos necesarios, luego inicialice la cámara, configure el formato de píxeles y el tamaño del fotograma.
Utilice la función skip_frames() para esperar a que la cámara se estabilice.
En un bucle infinito, toma una foto y busca el código QR.
Si se encuentra un código QR, se imprime su contenido.

Caso 8: Mostrar el contenido del código QR en la pantalla LCD

import sensor, image, time, lcd  
  
lcd.init() # 初始化LCD屏幕  
sensor.reset() # 初始化摄像头  
sensor.set_pixformat(sensor.RGB565) # 设置像素格式  
sensor.set_framesize(sensor.QVGA) # 设置帧大小  
sensor.skip_frames(time = 2000) # 等待摄像头稳定  
  
while(True):  
    img = sensor.snapshot() # 拍摄照片  
    res = img.find_qrcodes() # 查找QR码  
    if len(res) > 0: # 如果找到了QR码  
        lcd.clear() # 清空LCD屏幕  
        lcd.draw_string(res[0].data.decode("utf-8"), lcd.COLOR_WHITE, lcd.COLOR_BLACK) # 显示QR码内容

Interpretación de los puntos clave:
primero inicialice la pantalla LCD y la cámara, configure el formato de píxeles y el tamaño del cuadro.
En un bucle infinito, toma una foto y busca el código QR.
Si se encuentra un código QR, la pantalla LCD se borra y se muestra el contenido del código QR.
Utilice la función draw_string() para mostrar texto en la pantalla LCD.

Caso 9: Guardar el contenido del código QR en un archivo

import sensor, image, time, os  
  
sensor.reset() # 初始化摄像头  
sensor.set_pixformat(sensor.RGB565) # 设置像素格式  
sensor.set_framesize(sensor.QVGA) # 设置帧大小  
sensor.skip_frames(time = 2000) # 等待摄像头稳定  
  
while(True):  
    img = sensor.snapshot() # 拍摄照片  
    res = img.find_qrcodes() # 查找QR码  
    if len(res) > 0: # 如果找到了QR码  
        filename = res[0].data.decode("utf-8") + ".txt" # 以QR码内容为文件名创建文件  
        with open(filename, "w") as f: # 打开文件并写入内容  
            f.write("This is a QR code content.") # 写入内容到文件中

Interpretación de los puntos clave:
primero inicialice la cámara y configure el formato de píxeles y el tamaño del fotograma. En un bucle infinito, toma una foto y busca el código QR. Si se encuentra un código QR, se crea un archivo con el contenido del código QR como nombre de archivo. Abra el archivo y escriba el contenido. Aquí solo se escribe una cadena fija. Puede modificar el contenido escrito según las necesidades reales.

Tenga en cuenta que los casos anteriores son sólo para ampliar ideas y pueden contener errores o inaplicabilidad. Diferentes plataformas de hardware, escenarios de uso y versiones de MicroPython pueden dar lugar a diferentes métodos de uso. En la programación real, debe ajustarla de acuerdo con la configuración de su hardware y sus necesidades específicas, y realizar múltiples pruebas reales. Es importante asegurarse de que el hardware esté conectado correctamente y comprender las especificaciones y características de los sensores y dispositivos utilizados.

Insertar descripción de la imagen aquí

おすすめ

転載: blog.csdn.net/weixin_41659040/article/details/133575604