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.
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 :)