import cv2
from pyzbar.pyzbar import decode
import re
import sys

def BarcodeReader(image):
    img = cv2.imread(image)
    detectedBarcodes = decode(img)
    if not detectedBarcodes:
        print("ERROR: Barcode Not Detected or your barcode is blank/corrupted!")
    else:
        for barcode in detectedBarcodes:
            (x, y, w, h) = barcode.rect
            cv2.rectangle(img, (x-10, y-10),
                          (x + w+10, y + h+10),
                          (255, 0, 0), 2)
            if barcode.data != "":
                barcodeAt = str(barcode.data).replace("b'", "")
                barcodeAt = str(barcodeAt).replace("'", "")
                barcodeAt = str(barcodeAt).replace(" ", "")
                if barcode.type == "EAN13" and barcode.type == 'EAN8':
                    barcode = re.sub('[^0-9', '', barcode)
                print("BARCODE:"+str(barcodeAt))
if __name__ == "__main__":
    if sys.argv.__len__() <= 1:
        print("ERROR: File not found!")
    else:
        BarcodeReader(sys.argv[1])

# pip install pyzbar
# pip install opencv-python
