Learn Python – Python OpenCV object detection- Basic and advance

OpenCV is the huge and open-source library for photo processing, computing device learning and computer vision. It is also enjoying an essential role in real-time operation. With the help of the OpenCV library, we can without problems technique the pictures as nicely as videos to become aware of the objects, faces or even handwriting of a human existing in the file. We will only center of attention to object detection from images the usage of OpenCV in this tutorial. We will examine about how we can use OpenCV to do object detection from a given picture using a Python program.

Object Detection

Basically, object detection is a present day computer science that is related to image processing, deep mastering and computer imaginative and prescient to realize the objects existing in an image file. All the applied sciences used in the Object detection approach (as we mentioned earlier) deals with detecting situations of the object in the photo or video.

Object Detection using OpenCV

We have realized about object detection in the previous section, and in this section, we will examine that how we can do object detection in an picture or video using the OpenCV library. We will first import the OpenCV library in the Python program, and then we will use features to function object detection on an photograph file given to us. But, before the use of and importing the library functions, let’s first set up the necessities for the usage of the Object detection technique.

In this tutorial, we will use the Haar cascade technique to do object detection. Let’s analyze in quick about the Haar cascade approach first.

Haar cascade:

Basically, the Haar cascade approach is an method based totally on computing device getting to know the place we use a lot of fine and terrible pictures to train the classifier to classify between the images. Haar cascade classifiers are regarded as the tremendous way to do object detection with the OpenCV library. Now, let’s apprehend the notion of positive and bad pictures that we have discussed earlier:

Positive images: These are the images that contain the objects which we want to be identified from the classifier.

Negative Images: These are the images that do not contain any object that we want to be detected by the classifier, and these can be images of everything else.

Requirements for object detection with Python OpenCV:

We have to install first some essential libraries in our gadget as it is an essential requirement for doing object detection tasks. We have to deploy the following libraries into our system as the requirement for performing object detection:

  1. Installation of OpenCV library:

First and foremost, the requirement to function object detection the use of the OpenCV library is that the OpenCV library should be existing in our gadget so that we can import it into a Python application and use its object detection functions. If this library is no longer existing in our system, we can use the following command in our command prompt terminal to deploy it:

pip install opencv-python  

When we press the enter key after writing this command in the terminal, the pip installer in the command instant will start putting in the OpenCV library into our system.

As we can see that, the OpenCV library is successfully hooked up in our system, and now we can import it into a Python application to use its functions.

2. Installation of matplotlib library:

Matplotlib is very helpful in the opening, closing, analyzing etc., pictures in a Python program, and this is why the installation of this library for object detection turns into an necessary requirement. If the matplotlib library is no longer current in our system, we have to use the following command in our command immediate terminal to installation it:

pip install matplotlib  

When we press the enter key after writing this command in the terminal, the pip installer in the command on the spot will begin putting in it into our system.

As we can see that, the matplotlib library is efficaciously set up in our system, and now we can import it into a Python program to use its functions for opening, analyzing etc., images.

We have established all the required libraries for performing object detection, and now we can move ahead with the implementation part of this task.

Implementation of Object detection in Python:

In this part, we will write the Python packages to do the object detection and understand the implementation of it. We will use the following picture in our Python application to operate the object detection on it:

Opening the Image

We will first open the photograph given above and create the environment of the image to show it in the output. Let’s first look at an example software to understand the implementation, and then we will seem at the rationalization part.

Example 1: Opening the image using OpenCV and matplotlib library in a Python program:

# Import OpenCV module  
import cv2  
# Import pyplot from matplotlib as pltd  
from matplotlib import pyplot as pltd  
# Opening the image from files  
imaging = cv2.imread("opencv-od.png")  
# Altering properties of image with cv2  
img_gray = cv2.cvtColor(imaging, cv2.COLOR_BGR2GRAY)  
imaging_rgb = cv2.cvtColor(imaging, cv2.COLOR_BGR2RGB)  
# Plotting image with subplot() from plt  
pltd.subplot(1, 1, 1)  
# Displaying image in the output  
pltd.imshow(imaging_rgb)  
pltd.show()  

Output:

Explanation:

First, we have imported the OpenCV (as cv2) and matplotlib (as plt) libraries into the program to use their functions in the code. After that, we have opened the photograph file the usage of the imread() feature of cv2.

Then, we have described the houses for the photo we opened in the software the use of the cv2 functions. Then, we subplot the photo using the subplot() characteristic of plt and giving parameters in it. In last, we have used the imshow() and show() feature of the plt module to show the picture in the output.

As we can see in the output, the photo is displayed as a end result of the program, and its borders have been sub-plotted.

Recognition or object detection in the image

Now, we will use the detectMultiScale() in the software to discover the object present in the image. Following is the syntax for the usage of detectMultiScale() characteristic in the code:

found = xml_data.detectMultiScale(img_gray,   
                                   minSize = (30, 30))  

We will use a circumstance statement with this feature in the software to check if any object from the image is detected or no longer and spotlight the detected part. Let’s recognize the implementation of object detection in the picture thru an example program.

Example 2: Object detection in the image the usage of the detectMultiScale() in the following Python program:

# Import OpenCV module  
import cv2  
# Import pyplot from matplotlib as plt  
from matplotlib import pyplot as pltd  
# Opening the image from files  
imaging = cv2.imread("opencv-od.png")  
# Altering properties of image with cv2  
imaging_gray = cv2.cvtColor(imaging, cv2.COLOR_BGR2GRAY)  
imaging_rgb = cv2.cvtColor(imaging, cv2.COLOR_BGR2RGB)  
# Importing Haar cascade classifier xml data  
xml_data = cv2.CascadeClassifier('XML-data.xml')  
# Detecting object in the image with Haar cascade classifier   
detecting = xml_data.detectMultiScale(imaging_gray,   
                                   minSize = (30, 30))  
# Amount of object detected  
amountDetecting = len(detecting)  
# Using if condition to highlight the object detected  
if amountDetecting != 0:  
    for (a, b, width, height) in detecting:  
        cv2.rectangle(imaging_rgb, (a, b), # Highlighting detected object with rectangle  
                      (a + height, b + width),   
                      (0, 275, 0), 9)  
# Plotting image with subplot() from plt  
pltd.subplot(1, 1, 1)  
# Displaying image in the output  
pltd.imshow(imaging_rgb)  
pltd.show()  

Output:

Explanation:

After opening the photograph in the program, we have imported the cascade classifier XML file into the program. Then, we used the detectMultiScale() function with the imported cascade file to detect the object existing in the picture or not.

We used if condition in the application to test that object is detected or not, and if the object is detected, we have highlighted the detected object section the usage of for loop with cv2 functions. After highlighting the detected object section in the image, we have displayed the processed image using the plt show() and imshow() function.

As we can see in the output, the picture with the object detected phase as highlighted is proven to us when we run the program.