Real Time Barcode Scanner Python with Source Code

A Real Time Barcode Scanner Python is a graphical representation of data that can be read by machines in real-time. We use the pyzbar library to make a Real-Time Barcode Reader in Python. pyzbar lets us figure out what the one-dimensional barcode means.

This pyzbar can return 3 fields based on the barcode object:

  1. Type: There are a number of different kinds of barcodes. Which have names like CODE-128, Code-11, CODE-39, etc., that make them stand out. If the symbol that pyzabr finds is a QR code, then that type of QR code is a QR code.
  2. Data: This is the information that is built into the barcode. Depending on the type of barcode, this information can be in many different formats, such as alphanumeric, numerical, binary, etc.
  3. Location: This is a list of all the points that are in the code. For barcodes, these are the beginning and end of the lines. And for QRcode, it’s a list of four points that match the four corners of the QR code quad.

Barcode Scanner in Python Project Information’s

Project Name:Real Time Barcode Scanner Python
Abstract:A barcode scanner captures and reads the information in a bar code.
Language Used:Python Opencv
Type:Machine Learning Project
Developer:Angel Jude Suarez
Barcode Scanner in Python
Real-Time Barcode Scanner Python
Real-Time Barcode Scanner Python

Getting Started

In this article we will learn How To Create a OpenCV Barcode Scanner using Python in Real-Time! So, without further a do let’s begin!

First, we’ll set up the libraries we’ll need for this project, and then we’ll start writing code.

Installing Libraries

In this step, we will install the Pillow, OpenCV, and Pyzbar libraries.

Install Pillow

The Pillow library is also known as PIL, which stands for Python Image Library.

pip install pillow

Install OpenCV

OpenCV is a well-known library, especially for projects that involve computer vision.

pip install opencv-python

Install Pyzbar

Pyzbar is a library for Python that lets us read barcodes and QR codes.

pip install pyzbar

Decoding Function

This is the step where we write the decoding function to decode the barcodes, which is where most of the fun stuff will happen most of the time.

decoding

The decoding function will do three things, which are as follows:

  1. Seeing and figuring out what the barcode or QR code is that we will show the camera.
  2. Putting the stored information as text on the barcode/QR code reader that can be read.
  3. And finally, exporting the information stored as a text file.

Importing Libraries

Before we write to the function, let’s import the libraries we just installed.

#Importing cv2 and pyzbar libraries

import cv2
from pyzbar import pyzbar

Adding Function

Now, let’s add the function to read the given barcode in real-time.

#read barcode function

def read_barcodes(frame):
    barcodes = pyzbar.decode(frame)
    for barcode in barcodes:
        x, y, w, h = barcode.rect
        # 1
        barcode_info = barcode.data.decode('utf-8')
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

        # 2
        font = cv2.FONT_HERSHEY_DUPLEX
        cv2.putText(frame, barcode_info, (x + 6, y - 6), font, 2.0, (255, 255, 255), 1)
        # 3
        with open("barcode_result.txt", mode='w') as file:
            file.write("Recognized Barcode:" + barcode_info)

# return the bounding box of the barcode
    return frame

Understand The Given Function

  • First, we take the information from the detecting barcode or QR code and figure out what it means. And then draw a rectangle around it. This lets us know if our machine found the barcode or QR code.
  • The second thing we do is put text on top of the rectangle we just made. The information that can be read will be in the text.
  • Third, we’re sending the information to a text file. If you plan to test with more than one barcode or QR code, you should change the name of the document or it will be overwritten.

Main Function of Real Time Barcode Scanner

In this step, we’ll write the application’s main function, which tells it to start working. The computer’s video camera will be turned on by the main function, which will then call the decoding function.

#main function

def main():
    camera = cv2.VideoCapture(0)
    ret, frame = camera.read()
    while ret:
        ret, frame = camera.read()
        frame = read_barcodes(frame)
        cv2.imshow('Real Time Barcode Scanner', frame)
        if cv2.waitKey(1) & 0xFF == 27:
            break

    camera.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()

Understand The Main Function

  • First, we use OpenCV to turn on the camera on the computer. Depending on the device, you need to change the value from 0 to 1 if you have an external camera.
  • Second, we use a while loop to run the decoding function over and over again until the “Esc” key is pressed. If not, the loop won’t stop, which could cause problems.
  • In the third step, we turn off the camera that we turned on in the first step. Then we’ll close the window for the application. OpenCV does all the work for us; all we have to do is call the methods.
  • Last, we start the program by calling the main function.

And now we have completely demonstrate on how to build the Python Real Time Barcode Scanner in a simple way.

Complete Source Code

Here are the complete source code of the project.

import cv2
from pyzbar import pyzbar


def read_barcodes(frame):
    barcodes = pyzbar.decode(frame)
    for barcode in barcodes:
        x, y, w, h = barcode.rect
        # 1
        barcode_info = barcode.data.decode('utf-8')
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)

        # 2
        font = cv2.FONT_HERSHEY_DUPLEX
        cv2.putText(frame, barcode_info, (x + 6, y - 6), font, 2.0, (255, 255, 255), 1)
        # 3
        with open("barcode_result.txt", mode='w') as file:
            file.write("Recognized Barcode:" + barcode_info)
            # return the bounding box of the barcode
    return frame

def main():
    camera = cv2.VideoCapture(0)
    ret, frame = camera.read()
    while ret:
        ret, frame = camera.read()
        frame = read_barcodes(frame)
        cv2.imshow('Real Time Barcode Scanner', frame)
        if cv2.waitKey(1) & 0xFF == 27:
            break

    camera.release()
    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()

How To Run The Project?

To run the project just follow the steps provided below.

  • Step 1: Open The Project Folder
  • Step 2: Type CMD In Project Folder Directory
  • Step 3: Type The Following Command

Type the following command given below in CMD.

py app.py
Command To Run The Project
Command To Run The Project

Output

However, If you run the project this will be the output.

Real Time Barcode Scanner Output
Real Time Barcode Scanner Output

Data Store

After Scanning the barcode the data will store in a text document file named “barcode_result.txt

Screenshot:

Data Store
Data Store

Conclusion

Perfect! We have completely demonstrate on how to build a Real Time Barcode Scanner in Python and Detect any Type of Barcode, I hope you learned a lot on my discussion, Thank You.

Leave a Comment