What’s New ?

The Top 10 favtutor Features You Might Have Overlooked

Read More

Create & Read QR Code using Python | QR Code Generator

  • Jul 10, 2023
  • 6 Minute Read
  • Why Trust Us
    We uphold a strict editorial policy that emphasizes factual accuracy, relevance, and impartiality. Our content is crafted by top technical writers with deep knowledge in the fields of computer science and data science, ensuring each piece is meticulously reviewed by a team of seasoned editors to guarantee compliance with the highest standards in educational content creation and publishing.
  • By Komal Gupta
Create & Read QR Code using Python | QR Code Generator

You must have seen QR Codes everywhere these days. But do you know that you can create a QR Code Generator with Python? Let’s learn how to create and read a QR Code using Programming.

What is a QR Code?

QR Codes can be defined as two-dimensional machine-readable optical labels that can be quickly accessed by a mobile device. They are composed of squares that are black and white and are organized in a particular design. The device reads a QR code, decodes the pattern, and then retrieves the data that is contained inside.

They have become increasingly popular for storing and transmitting data due to their ability to hold large amounts of information in a small space. These codes can store different types of data, including text, URLs, contact information, and more.

Nowadays, more and more people are using QR codes since they have several benefits over conventional barcodes. For instance, most smartphones can swiftly scan QR codes, which can also be tracked. More data can be stored on them, and a larger range of information can be accessed through them.

As a result, a wide range of applications, such as marketing, tracking customer purchases, event registration, payment, and authentication, use QR codes.

QR codes are a fantastic alternative to take into consideration if you're searching for a strategy to include interaction in your marketing materials or website.

How to Generate QR Code using Python?

To begin working with QR codes in Python, you need to ensure that you have the necessary libraries installed. Python being a versatile open-source language there are so many libraries available to work on QR code generators few of them are qrcode, pyqrcode(for creating QR), pillow, and opencv( for QR scanning).

Let’s learn how to generate a QR Code using Python step-by-step for better understanding.

Step 1: Installing the libraries

Run the following command in your jupyter cell to install the dependencies.

!pip install qrcode

!pip install pyzbar

!pip install pycopy-webbrowser

!pip install opencv-python

Step 2: Generating QR

# Importing libraries

import qrcode

data = "https://favtutor.com/"

qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_L, box_size=10, border=4)

qr.add_data(data)

qr.make(fit=True)

img = qr.make_image(fill_color="black", back_color="white")

img.save("qr_code.png")

 

In this illustration, the qrcode module is first imported. Then, using the input Favtutor website address, we define the data we wish to encode in the data variable. Using hyperparameters, we generate a QRCode object. Using qr.add_data(), we then add the data to the QR code. T

he QR code image is then created, its fill and backdrop colors are selected, and it is saved to a file named 'qr_code.png'.

Here are some hyperparameters:

  • Version: Size of the QR code generated, value range between 1 to 40 where 1 is the smallest size of 21*21 matrix.

  • Error_correction: Controls the Error Correction used for the QR code varies from 7% to 30% and the default is ERROR_CORRECT_M which means about 15% or fewer errors can be corrected.

  • Box_size: Number of pixels in each box of QR code.

  • Border: Border thickness of the QR code, the default value is 4.

QR Code with Python

This is the QR code generated by the above code. You can try scanning the QR code from your phone scanner to see how it works.

There are also many online QR code generators available online that also can do the same work for you easily.

How to Read QR Codes with Python?

We may need to read and extract the encoded data after creating a QR code. For determining where the barcodes are located in the frame while scanning python includes a number of libraries to help with this task, including ‘pyzbar’ and ‘zbarlight’. We'll use pyzbar in this example.

Here's an example of a code that can be used to interpret a QR code image.

import cv2

from pyzbar import pyzbar

import webbrowser

 

def read_barcode(image_path):

   # Load the image

   image = cv2.imread(image_path)

 

   # Convert the image to grayscale

   gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

 

   # Detect and decode barcodes

   barcodes = pyzbar.decode(gray)

 

   # Loop over detected barcodes

   for barcode in barcodes:

       # Extract the barcode data

       barcode_data = barcode.data.decode("utf-8")

       barcode_type = barcode.type

 

       # Print the barcode data and type

       print("Barcode Data:", barcode_data)

       print("Barcode Type:", barcode_type)

 

       # Check if the barcode data is a URL

       if barcode_type == 'QRCODE' and barcode_data.startswith('http'):

           # Open the URL in a web browser

           webbrowser.open(barcode_data)

 

       # Draw a bounding box around the barcode

       (x, y, w, h) = barcode.rect

       cv2.rectangle(image, (x, y), (x + w, y + h), (0, 255, 0), 2)

 

   # Display the image with detected barcodes

   cv2.imshow("Barcode Reader", image)

   cv2.waitKey(0)

   cv2.destroyAllWindows()

 

# Path to the barcode image

image_path = "qr_code.png"

 

# Call the read_barcode function

read_barcode(image_path)

 

Here are the libraries Used:

  • The OpenCV library for image processing and computer vision is cv2.

  • The pyzbar library detects and decodes barcodes in photos.

  • webbrowser is a library that allows you to launch web browsers.

The image path is passed to the read_barcode function. It uses cv2.imread to load the image and cv2. cvtColor to convert it to grayscale. After that, it employs pyzbar.decode to recognize and decode barcodes in the grayscale image. Using barcode.data.decode("utf-8") and barcode.type.

The function runs over each detected barcode and extracts the barcode data and type. The barcode data and type are then printed. To visualize the detected barcodes, the program uses cv2.rectangle to construct a bounding box around each barcode. cv2.imshow is used to display the modified picture while waiting for a key push.

Following the extraction of the barcode data, we check to see if the barcode type is 'QRCODE' (QR code) and if the data begins with 'https', indicating a URL. We call the web browser if both requirements are met.open() with the parameter barcode data will open the URL in the default web browser.

For non-URL data or other barcode kinds, the code will continue to construct bounding boxes and display the image with the identified barcodes as previously.

Finally, using cv2.destroyAllWindows, the OpenCV windows are closed.

Conclusion

You have understood all the important concepts and libraries in Python to create and read a QR Code. You can now integrate this into your own applications! Happy Learning :)

FavTutor - 24x7 Live Coding Help from Expert Tutors!

About The Author
Komal Gupta
I am a driven and ambitious individual who is passionate about programming and technology. I have experience in Java, Python, and machine learning, and I am constantly seeking to improve and expand my knowledge in these areas. I am an AI/ML researcher. I enjoy sharing my technical knowledge as a content writer to help the community.