|
|
- import cv2
- from pyzbar import pyzbar
-
- class Read():
- instance = 0
- sid = 0
- def __init__(self,inst):
- self.instance = inst
-
- def detect(self):
-
- cam = cv2.VideoCapture(0)
-
- barcodeData_prev = 0
- while 1:
-
- ret , img = cam.read()
- gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- barcode = pyzbar.decode(gray)
- if len(barcode) > 0:
- barcode = barcode[0]
- (x, y, w, h) = barcode.rect
- barcodeData = barcode.data.decode("utf-8")
- barcodeType = barcode.type
- if barcodeData_prev == 0 or barcodeData_prev != barcodeData:
- barcodeData_prev = barcodeData
- self.instance.received(barcodeData)
- continue
- text = "{} ({})".format(barcodeData, barcodeType)
- cv2.putText(img, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,
- 0.5, (255, 0, 0), 2)
- cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
- cv2.imshow("a", img)
- if cv2.waitKey(1) & 0xFF == ord('q'):
- break
- cam.release()
- cv2.destroyAllWindows()
|