Jak mohu číst qr kódy pomocí CV2 vzhledem k jejich CV2 je lámání n-tic?

0

Otázka

Sleduji tutorial, jak získat qr reader pracuje v pythonu, ale já jsem běží do následující chybová zpráva při spuštění:

Výjimkou došlo: chyba OpenCV(4.5.4) :-1: chyba: (-5:Špatný argument) ve funkci 'line' Přetížení rozlišení se nezdařilo:

  • Nemůžu parse 'pt1'. Sekvence položka s indexem 0 má špatný typ
  • Nemůžu parse 'pt1'. Sekvence položka s indexem 0 má špatný typ Soubor "C:\Users\me\project\qrreader.py", linka 18, v cv2.line(img, n-tice(bbox[i][0]), n-tice(bbox[(i+1) % len(bbox)][0]), barva=(255,

Skript je následující

import cv2

# set up camera object
cap = cv2.VideoCapture(0)

# QR code detection object
detector = cv2.QRCodeDetector()

while True:
    # get the image
    _, img = cap.read()
    # get bounding box coords and data
    data, bbox, _ = detector.detectAndDecode(img)
    
    # if there is a bounding box, draw one, along with the data
    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("data found: ", data)
    # display the image preview
    cv2.imshow("code detector", img)
    if(cv2.waitKey(1) == ord("q")):
        break
# free camera object and exit

Tento skript je ve všech výukových programů tam, zdánlivě, ale zdá se, že se rozešel s opencv 4.5.2 změny, pokud můžu říct, ale nemůžu to opravit.

Pokud ne, n-tice, co dělá line funkce vyžadují?

computer-vision cv2 opencv python
2021-11-22 20:07:52
1

Nejlepší odpověď

1

Vaše bbox 3-rozměrné pole s tvar (1,4,2). Navrhuji zjednodušit to tím, že přetváří je do 2D pole. Vrci int, numpy pole mají astype metoda. Konečně, tuple je stále vyžadováno cv2.line, takže mějte, že tak, jak je.

Zde je jedním z možných řešení bloku:

    # if there is a bounding box, draw one, along with the data
    if bbox is not None:
        bb_pts = bbox.astype(int).reshape(-1, 2)
        num_bb_pts = len(bb_pts)
        for i in range(num_bb_pts):
            cv2.line(img,
                     tuple(bb_pts[i]),
                     tuple(bb_pts[(i+1) % num_bb_pts]),
                     color=(255, 0, 255), thickness=2)
        cv2.putText(img, data,
                    (bb_pts[0][0], bb_pts[0][1] - 10),
                    cv2.FONT_HERSHEY_SIMPLEX,
                    0.5, (0, 255, 0), 2)

Numpy dokumentace: přebudovat, astype.

2021-11-23 13:25:33

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................