es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo leer códigos QR utilizando CV2 dado que CV2 rompe las tuplas?

Estoy siguiendo un tutorial para hacer funcionar un lector de códigos QR en Python, pero me he topado con el siguiente error al ejecutarlo:

Ha ocurrido una excepción: error
OpenCV(4.5.4) :-1: error: (-5:Argumento incorrecto) en la función ‘line’
Falló la resolución de sobrecarga:
– No se puede analizar ‘pt1’. El elemento de secuencia con índice 0 tiene un tipo incorrecto.
– No se puede analizar ‘pt1’. El elemento de secuencia con índice 0 tiene un tipo incorrecto.
Archivo “C:\Users\yo\proyecto\lectorqr.py”, línea 18, en
cv2.line(img, tuple(bbox[i][0]), tuple(bbox[(i+1) % len(bbox)][0]), color=(255,

El script es el siguiente:

import cv2

objeto para configurar la cámara

cap = cv2.VideoCapture(0)

objeto de detección de códigos QR

detector = cv2.QRCodeDetector()

while True:
# obtener la imagen
_, img = cap.read()
# obtener las coordenadas del cuadro delimitador y los datos del código QR
data, bbox, _ = detector.detectAndDecode(img)

# si hay un cuadro delimitador, dibujarlo, junto con los datos
if(bbox is not None):
    for i in range(len(bbox)):
        cv2.line(img, tuple(bbox[i][0]), tuple(bbox[(i+1) % len(bbox)][0]), color=(255,
                 0, 255), thickness=2)
    cv2.putText(img, data, (int(bbox[0][0][0]), int(bbox[0][0][1]) - 10), cv2.FONT_HERSHEY_SIMPLEX,
                0.5, (0, 255, 0), 2)
    if data:
        print("se han encontrado datos:", data)
# mostrar la vista previa de la imagen
cv2.imshow("detector de código", img)
if(cv2.waitKey(1) == ord('q')):
    break

liberar el objeto de la cámara y salir

Este script se encuentra en todos los tutoriales que hay por ahí, aparentemente, pero parece que se ha roto con los cambios de opencv 4.5.2, pero no puedo solucionarlo.

¿Si no es una tupla, qué requiere la función line?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    La función line en OpenCV requiere dos puntos como parámetros de entrada, representados ambos como tuplas con dos valores enteros cada uno. El mensaje de error sugiere que la función no está recibiendo tuplas con el formato correcto, específicamente para el parámetro pt1.

Comments are closed.