C:\> Rostislav Persion's Projects

.:: WEBCAM QR CODE IN PYTHON ::.
Python program that decodes QR codes in webcam






This is a simple Python program that decodes QR codes that it sees in the webcam. It can find the QR code in the details of an image and decodes it.

In order to get this program to run, you will need to run a few command line statements to install the necessary modules...

py -m pip install opencv-python
py -m pip install pillow
py -m pip install pyzbar

#FOR WEB CAM
import cv2  
import time

#FOR BAR CODE
from pyzbar.pyzbar import decode
from PIL import Image

cap = cv2.VideoCapture(0) 
ret, img = cap.read()
width, height, junk = img.shape

while True:  
  
    #READ WEBCAM
    ret, img = cap.read()  

    #DECODE BARDCODE
    result = decode(img)
    cnt = 0
    for i in result:

        cnt += 1

        decoded_str = i.data.decode("utf-8")
        (x, y, w, h) = i.rect
        print("BARCODE #" + str(cnt) + " " + decoded_str)
        
        #DRAW LABEL
        font = cv2.FONT_HERSHEY_SIMPLEX 
        org = (10, 20 + (cnt * 20)) 
        fontScale = 0.5
        color = (255, 0, 0) 
        thickness = 1
        cv2.putText(img, "BARCODE #" + str(cnt) + " = " + decoded_str, org, font, fontScale, color, thickness, cv2.LINE_AA)
        
        #DRAW RECTANLGE AROUND BARCODE
        cv2.rectangle(img, (x, y), (x + w, y + h), (0, 0, 255), 5)

    if cnt > 0:
        print("")


    #EXPORT
    cv2.imshow('PERSION - PYTHON WEBCAM QR DECODER',img) 
    time.sleep(0.1)

    #DO EVENTS
    k = cv2.waitKey(1) & 0xff
    if k == 27: 
        break

cap.release() 
cv2.destroyAllWindows()  


THIS IS THE CONSOLE VERSION...


#FOR WEB CAM
import cv2  
import time

#FOR BAR CODE
from pyzbar.pyzbar import decode
from PIL import Image

#FOR TTS
import pyttsx3

engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id) 



cap = cv2.VideoCapture(0) 
ret, img = cap.read()
width, height, junk = img.shape

while True:  
  
    #READ WEBCAM
    ret, img = cap.read()  

    #DECODE BARDCODE
    cnt = 0
    result = decode(img)
    for i in result:

        cnt += 1

        decoded_str = i.data.decode("utf-8")
        (x, y, w, h) = i.rect
        
        print("BARCODE #" + str(cnt) + " " + decoded_str)

        #TTS OUTPUT
        engine.say("BARCODE #" + str(cnt) + " " + decoded_str)
        engine.runAndWait()
    
    if cnt > 0:
        print("")

    time.sleep(0.5)