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!