After watching this crash course about Object Detection software you will be able to create object detection software that can be easily used by anyone. Thanks to a simple graphic interface and the possibility of connecting external video resources, it will be possible to make the most of the potential of computer vision even by those who are not expert programmers.

Even tedious and lengthy installations of complicated libraries will no longer be necessary because your python software will be converted into a convenient .exe that can run on any windows computer.

webcam and object detection software with OpenCV. Gui installation

1. Installations necessary for the Object Detection software

OpenCV is required for the use of Object Detection Software. You can install from the terminal using pypi.org with the command:

pip install opencv-contrib-python

Open the terminal (as shown in the image) and start the command to complete the installation. Now, you can go to the next step.

Install OpenCV with contrib for Object Detection software

2. Object Detection

Identifying an object in Computer vision consists in surrounding the Object detected with a bounding box.
There are different object detection methods commonly used in computer vision implemented: detecting objects by their color, by their movement, or with deep learning.

To build an object detection software you need object recognition with Deep Learning. For this project, I used Tiny-Yolo with the aim of creating a light and fast software and COCO Dataset to recognize objects from a dataset of 80 things. You can see all the details on the official YOLO documentation with Darknet.

We will not see the details on object custom detection because it is not the goal of this Crash Course. If you are interested in this topic or want to carry out your own project with Deep Learning I recommend Object Detection (Opencv & Deep learning).

Object detection with Deep Learning

Follow the basic steps to integrate the deep learning model with Opencv and the entire software:

Object detection software using DNN module with OpenCV

I have already prepared the DNN model so you can download it from this crash_course_ods.zip link and put it in the root folder

DNN model object detection

Now open the main project file and call the DNN model with this code

...

# Opencv DNN
net = cv2.dnn.readNet("dnn_model/yolov4-tiny.weights", "dnn_model/yolov4-tiny.cfg")
model = cv2.dnn_DetectionModel(net)

...

OpenCV Videocapture

Retrieve video stream from the camera with OpenCV using these lines of code:

# Initialize camera
cap = cv2.VideoCapture(0)

...

while True:
    # Get frames
    ret, frame = cap.read()

Remember that Opencv considers video as a sequence of frames so it uses a While Loop to process frame by frame.

Object detection

By analyzing the frames captured by OpenCV with the DNN Model it is possible to identify the objects present in that specific frame. As output, we will have: the class, the recognition percentage, the points in the frame that allow us to draw a box around the object and precisely identify its position.

    # Object Detection
    (class_ids, scores, bboxes) = model.detect(frame, confThreshold=0.3, nmsThreshold=.4)
    for class_id, score, bbox in zip(class_ids, scores, bboxes):
        (x, y, w, h) = bbox
        class_name = classes[class_id]
        color = colors[class_id]

3. Simple user interface (add buttons)

To use our object detection software more comfortably we can add command buttons. The best solution would be to use PyQt but for simplicity, I just used the OpenCV functions to generate the buttons.

Find the gui_buttons.py file with the functions among the files available for download. Just add it to the main file.

from gui_buttons import Buttons

# Initialize Buttons
button = Buttons()
button.add_button("person", 20, 20)
button.add_button("cell phone", 20, 100)
button.add_button("keyboard", 20, 180)
button.add_button("remote", 20, 260)
button.add_button("scissors", 20, 340)

colors = button.colors

...

Capture mouse click with this function

def click_button(event, x, y, flags, params):
    global button_person
    if event == cv2.EVENT_LBUTTONDOWN:
        button.button_click(x, y)

Finally, it shows the buttons on the screen

    # Display buttons
    button.display_buttons(frame)

As you can see from the image down here, the buttons on the left are shown. If the function is active the button is red with white writing, otherwise, it is an empty rectangle with red writing.

object detection software Simple user interface

4. Convert to Window Executable (.exe file)

Converting our object detection software into a .exe file is very simple using the cx_freeze library. Being a python library it can be installed with a command line

pip install cx_freeze

if everything goes well you will not get errors.

object detection software install cx_freeze

How to prepare files for cx_freeze

Create a new file called setup.py and enter your software information. In the parameter of “Executable ()” insert the path of your main file, here is a code example

import sys
from cx_Freeze import setup, Executable


setup(name="Simple Object Detection Software",
      version="0.1",
      description="This software detects objects in realtime",
      executables=[Executable("main.py")]
      )

Save and put it in the folder of your main file. I recommend that you see the documentation for more customizations.

Build command line

If you want to compile from the command line, just enter the path to the setup.py file and the build command on cmd.

python c:/program/setup.py build 

I remind you that it will compile with the version of python you are using and all the libraries associated with your python will be used. If you don’t get any errors, you’re done and can skip the next step.

compile cx_freeze

Or Build with Pycharm

Alternatively, you can compile with Pycharm. Open the configuration file in Pycharm and at the top right click on “Edit configuration” as in the image below.

Pycharm build

In the configuration window that opens, write “build” in the parameters and click on “Apply” to confirm.

Pycharm parameters build

Final result and main.exe

If the previous steps didn’t give any errors you will get a folder called “build”. Now copy inside the “dnn_model” folder that contains the object recognition model. In the image, you see the result to be obtained

main.exe final result

You will have the final folder called “exe.win-amd64-3.9” with the main.exe file inside. To run the program, the folder and its contents are sufficient, the end-user can use the program without installing python or special libraries.

Detect custom object with your Object detection software

Recognizing objects is the fundamental part of computer vision. For the sake of time, we have used a pre-set object recognition model in this course. If you want object recognition and custom object tracking, I recommend that you see my course Object Recognition with deep learning