Skaner kodów kreskowych z kamerki przy użyciu OpenCV?

0

Cześć. Próbuję zaimplementować skaner kodów kreskowych używając BarcodeReader API. Wszystko działa dobrze dla zaimportowanego z dysku obrazka, kod zostaje wykryty i wypisany. Natomiast kiedy chcę przekształcić to na detekcję live z kamerki używająć OpenCV dostaję BarcodeReaderError, bo żaden kod nie zostaje wykryty. Czy ktoś wie jak sprawić żeby to dobrze działało? Męczę się z tym trzy dni i nie mam już pomysłów.

from dbr import *
import cv2 

license_key = 'my_key'

title = "Barcode Reader"
cv2.namedWindow(title, 1)
capture = cv2.VideoCapture(0)
 
while True:
    ret, frame = capture.read()

    reader = BarcodeReader()
    reader.init_license(license_key)
    try:
        text_results = reader.decode_file_stream(bytearray(frame))
        if text_results != None:
            for text_result in text_results:
                print("Barcode type :")
                print(text_result.barcode_format_string)
                print("Barcode text :")
                print(text_result.barcode_text)

    except BarcodeReaderError as bre:
        print(bre)
    cv2.imshow(title, frame)
    code = cv2.waitKey(10)
    if code == ord('q'):
        break
0

Dwie biblioteki, ciężko będzie zreoprodukować, spróbuj zapytać na SO.

1

bytearray(frame)

Ale w jakiej postaci to zwraca ten obraz? Jako co? Tablice pixeli? bajty jakiegoś PNG? I czego ta twoja libka oczekuje? Zgaduje że problem jest taki ze libka oczekuje dostać dane w jakimś konkretnym formacie a opencv zwraca dane w zupełnie innym formacie i się nie spina. Pewnie trzeba po drodze jakimś PILem to ogarnąć i skonwertować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1