We’re going to see today how to scan Qr code using OpenCV.
Below you can see the code read the Qr code from an image or a real-time video.

For this project, we will obviously need our OpenCV library then NumPy and pyzbar. If you need to install pyzbar, I recommend that you go directly to the project page to follow the instructions.

Scanning Qr Code read from an image

Let’s start by importing all the libraries into our python file. As you can see from the code below and in my first example I imported an image.

import cv2
import numpy as np
import pyzbar.pyzbar as pyzbar

image = cv2.imread("pysource_qrcode.png")

This is the qr code I used

Scanning Qr Code

Now I simply take the data with processing through the library and print the results.

decodedObjects = pyzbar.decode(image)
for obj in decodedObjects:
    print("Type:", obj.type)
    print("Data: ", obj.data, "\n")

We just did Scanning Qr Code – Opencv with Python for the single image.

Scanning Qr Code – Opencv with Python from webcam

For Scanning Qr Code – Opencv with Python with the webcam the procedure is similar to that used for the single image. Instead of the image path we use the function cv2.VideoCapture (0).

As we already know the video stream of the image, on OpenCV, is recognized as a sequence of images, so it will be necessary to insert the processing inside a While loop. In the code below everything will be clearer.

cap = cv2.VideoCapture(0)

while True:
    _, frame = cap.read()

    decodedObjects = pyzbar.decode(frame)
    for obj in decodedObjects:
        #print("Data", obj.data)
        cv2.putText(frame, str(obj.data), (50, 50), font, 2,
                    (255, 0, 0), 3)


In this article I explained, in a very simple way, how to decode a qr code with opencv and python. You can download the complete and immediately usable code from the download link.