Cv2'nin tuples kırılması göz önüne alındığında cv2'yi kullanarak qr kodlarını nasıl okuyabilirim?

0

Soru

Python'da çalışan bir qr okuyucu almak için bir öğreticiyi takip ediyorum, ancak çalıştırırken aşağıdaki hatayla karşılaşıyorum:

Özel durum oluştu: hata 'Satır'işlevinde OpenCV (4.5.4) :-1: hata: (-5:Hatalı bağımsız değişken) Aşırı yük çözünürlüğü başarısız oldu:

  • 'Pt1' ayrıştırılamıyor. Dizin 0 olan sıra öğesi yanlış bir türe sahip
  • 'Pt1' ayrıştırılamıyor. Dizin 0 olan sıra öğesi yanlış bir türe sahip Dosya "C:\Users\me\project\qrreader.py", satır 18, içinde cv2.satır(img, tuple(bbox[i][0]), tuple (bbox [(i + 1) % len (bbox)][0]), renk=(255,

Senaryo aşağıdaki gibidir

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

Görünüşe göre, bu komut dosyası oradaki tüm öğreticilerdedir, ancak söyleyebileceğim kadarıyla opencv 4.5.2 değişiklikleriyle kırılmış gibi görünüyor, ancak bunu düzeltemiyorum gibi görünüyor.

Bir tuple değilse, satır işlevi ne gerektirir?

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

En iyi cevabı

1

Senin bbox şekli olan 3 boyutlu bir dizidir (1,4,2). Bunu bir 2D diziye yeniden şekillendirerek basitleştirmenizi öneririm. Bu atama için int, numpy diziler var astype yöntem. Nihayet, bir tuple hala gerekli mi cv2.line gibi-olduğunu , o yüzden devam.

İşte olası bir çözüm parçası:

    # 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 belgeleri: yeniden şekillendir, astype.

2021-11-23 13:25:33

Diğer dillerde

Bu sayfa diğer dillerde

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