0

I want to check that QR code data is correct by confirm it 3 time. I compare new QR code data and saved QR code data but it not same. here is my code:

from __future__ import print_function
import pyzbar.pyzbar as pyzbar
import numpy as np
import cv2
import simplejson as json
import os


def decode(im):
    # Find barcodes and QR codes
    decodedObjects = pyzbar.decode(im)
    return decodedObjects

# Read image
cap = cv2.VideoCapture(0)

c = 0
while (True):
    # Capture frame-by-frame
    ret, im = cap.read()

    #Decode QR
    decodedObjects = decode(im)

    #check QR
    if os.path.isfile("QR.json") and decodedObjects != [] and os.stat("QR.json").st_size != 0 :
        for obj in decodedObjects:
            QRdata = obj.data

        QRc = open("QR.json", "r+")
        QRcdata = json.loads(QRc.read())
        QRc.close()
        print(QRcdata)
        if QRcdata == QRdata:
            c = c + 1
            print("confirm ", QRdata, " : ", c)

        else:
            c = 0
            print("reset , ", c)
            QR = open("QR.json", "w+")
            data = QRdata
            QR.seek(0)
            QR.write(json.dumps(data))
            QR.close()
            print("saved new QR ", QRdata)

    elif decodedObjects != [] :
        for obj in decodedObjects:
            QRdata = obj.data

        QR = open("QR.json", "w+")
        data = QRdata
        QR.seek(0)
        QR.write(json.dumps(data))
        QR.close()
        print("saved new QR ", QRdata)


    # Display the resulting frame
    cv2.imshow("Results", im)

    # press "q" to exit
    if cv2.waitKey(1) & 0xFF == ord('q') or c == 3:
        break

When it run. It have QR data is "b'QRCodedata'" but in file it is "QRCodedata". How i delete "b" in fornt of 'QRCodedata'. Thank for help!

0 Answers0