¿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?
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ámetropt1
.