Programs

Top 10 Exciting OpenCV Project Ideas & Topics for Freshers & Experienced [2021]

OpenCV or Open Source Computer Vision Library is a powerful machine learning, and AI-based library used to develop and solve computer vision problems. Computer vision includes training a computer to understand and comprehend the visual world, identify elements, and respond to them using deep learning models. Businesses today all over the world leverage it in image manipulation, processing, face detection, voice recognition, motion tracking, and object detection. 

Companies like Google, Facebook, Microsoft, and Intel already deploy OpenCV to develop computer vision applications. Mark Zuckerberg, in a 2015 interview had remarked, “If we are able to build computers that could understand what’s in an image and tell a blind person who otherwise couldn’t see that image, that would be pretty amazing as well.” 

Today, the OpenCV technology has proved to be a breakthrough for blind or visually impaired individuals. It allows them to get acquainted with an unfamiliar environment and recognise objects and people nearby to overcome this vision impairment. Computer vision is also the technology behind self-driving cars and intelligent motion sensor devices.

If you are eyeing a career in computer vision, here are ten interesting open cv projects to help you gain real-world experience. So, let’s get started!

Top 10 Open CV Projects to Check out in 2021

Project 1: Detecting Pneumonia using EdgeML

This OpenCV project aims at deploying an AI-based Pneumonia Detection software on your Raspberry Pi. It uses the Edge Machine Learning system to convert a Raspberry Pi with a camera into a pneumonia classifier using Balena’s multi-containers.

A second container is added to Balena that runs the Edge Impulse WebAssembly inference engine within a Node.js server. Both containers communicate through WebSockets to enable the BalenaCam to live stream every second of the feed from your camera on the webpage. 

Software and tools employed in the project include OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code, and Docker. Web browsers that support Balena Cam are Chrome, Safari, Firefox, and Edge. 

You can check out the project here.

Project 2: OpenCV-Powered Motion Sensor for Samsung’s SmartThings

First, you need a Raspberry Pi 3 with a working PiCam that has OpenCV installed previously. This project aims to create a custom Motion Sensor for SmartThings powered by computer vision and detect faces. The data collected is sent over to SmartThings over LAN – UPnP. 

To do so, we create a device handler for SmartThings and program it. We then use a Python script to access camera images and detect faces and pair the Raspberry Pi to be discovered by SmartThings. You also need to install imutils which you can source from GitHub. 

Check out the source code of the project here.

Project 3: Computational Photography

This project is to create panoramas, eliminate noise and unwanted objects from images, and increase the visibility of photographs clicked in low-light. Computational photography involves photo denoising algorithms to remove Gaussian white noise and distortion, photo restoration to filter lines, objects, and unwanted elements, and licence plate recognition to detect the license plate by recognising characters. 

Project 4: Create A Watermark On Images Using OpenCV

This project is a tutorial on how you can create a watermark — signature, logo, or water stamp to prevent misuse or violation of copyrights — on an image using the open computer vision library. It allows you to watermark an original image using both image and text using Python’s OpenCV library. To create a watermark using an image, you need to define the transparent function and the image-adding function. In the case of text, we import the PIL function and then adjust the text watermark position. 

You can look up the project here

Project 5: Finding Waldo

This is an object detection project to detect Waldo in an image by training an AI to recognise Waldo from a series of different images. We then employ a static approach to find Waldo by pixel matching. This is important because if you use a template image, the static matching will only apply to that particular image and not a new image of Waldo. 

We compute the correlation coefficient to perform template matching, which takes as input the waldo template and slides it pixel by pixel across the image in which Waldo is to be detected. The correlation coefficient shows if the pixel locations are a “good” or “bad” match. 

You can check out the project here

Project 6: Self Driving Cars

This project employs image manipulation and processing using OpenCV for creating self-driving cars. To train a car to drive by itself, we need to familiarise it with street lanes, finding them, and focusing on staying on them. This means a machine learning model requires expertise in identifying the region of interest by canny edge detection and hough lines transform to separate the pixels from an image that represents street lanes. This also requires masking and computing average slope points. 

Here’s the source code for identifying the region of interest:

import numpy as np

from matplotlib import pyplot as plt

image = cv2.imread(‘../../images/input.jpg’)

In [8]:

image.shape

Out[8]:

(830, 1245, 3)

In [11]:

x, y = image.shape[:2]

In [3]:

height, width = image.shape[:2]

# To get the starting pixel coordinates (top left of cropping rectangle)

start_row, start_col = int(height * .25), int(width * .25)

# To get the ending pixel coordinates (bottom right)

end_row, end_col = int(height * .75), int(width * .75)

# Using indexing to crop out the section of image we desire

cropped = image[start_row:end_row , start_col:end_col]

In [6]:

row, col = 1, 2

fig, axs = plt.subplots(row, col, figsize=(15, 10))

fig.tight_layout()

axs[0].imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

axs[0].set_title(‘Original Image’)

cv2.imwrite(‘original_image.png’, image)

axs[1].imshow(cv2.cvtColor(cropped, cv2.COLOR_BGR2RGB))

axs[1].set_title(‘Cropped Image’)

cv2.imwrite(‘cropped_image.png’, cropped)

plt.show()

Check out the project here.

Project 7: Face and Voice Recognition for the visually Impaired

This project is aimed to help visually impaired individuals by converting face input to voice output using a Raspberry Pi 2 Model B and a Raspberry Pi Camera Module. It is one of the most popular open cv projects in 2021. The software allows blind or visually handicapped people to detect signs, texts, or people in an unfamiliar environment, navigate their way without assistance. Among other requirements for the project are OpenCV and Python to conduct face recognition, and voice recognition is achieved using GNU Octave. 

You can check out the code here

Project 8: Smart Attendance Model

A smart attendance system is a handy tool for online models of education such as ZoomApp. It helps you keep track of the students attending your Zoom class by monitoring their attendance in real-time. All that has to be done is get a screenshot from the student with the date included and upload it to an excel file. 

You can find a tutorial for this open cv project here.

Project 9: Face-Swapping With OpenCV

Face-swapping applications and filters have been trending on social media for some time now. From appearing young and old to converting still images to moving images, the likes of Instagram, Snapchat, and FaceApp have all jumped the bandwagon. Face-swapping apps are relatively easy to create using OpenCV and Python

The steps include placing a source image on a destination image with the help of a triangle formed using the dlib landmark detector.

Check out the project here

Project 10: Detecting Contours and Counting Shapes 

The project detects the outlines or contours of a given shape to determine the type of shape an object has. For example, if a picture has bottle caps, you can use the round shape to determine how many bottle caps there are in the image. 

Here’s the source code for doing so:

import numpy as np

from matplotlib import pyplot as plt

In [2]:

image = cv2.imread(‘../../images/bottlecaps.jpg’)

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

plt.imshow(cv2.cvtColor(gray, cv2.COLOR_BGR2RGB))

plt.title(‘bottlecaps’); plt.show()

cv2.imwrite(‘bottlecaps_input.jpg’, gray)

Out[2]:

True

In [3]:

blur = cv2.medianBlur(gray, 5)

circles = cv2.HoughCircles(blur, cv2.HOUGH_GRADIENT, 1.5, 10)

for i in circles[0,:]:

    # draw the outer circle

    cv2.circle(image,(i[0], i[1]), i[2], (255, 0, 0), 2)

    # draw the center of the circle

    cv2.circle(image, (i[0], i[1]), 2, (0, 255, 0), 5)

plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

plt.title(‘Detected Circles’); plt.show() 

cv2.imwrite(‘detected_circles.jpg’, image)

Out[3]:

True

In [ ]:

On the other hand, counting shapes involves applying algorithms to segment images and cluster data to determine points of interest in an image. We use binary and approximate contours with the help of the approxPolyDP function.

You can check out this open cv project here

Final Thoughts

Computer Vision allows you to develop a wide range of useful applications like image transformation, translation, contour detection, image segmentation, object detection, object tracking and motion analysis.

It is also used in Augmented Reality (AR) by learning to locate faces, detect shapes, etc., to recognise objects and faces. You can also create interesting Open CV projects using simple machine learning such as a credit card reader, handwritten digit detector, or face reader. 

However, this requires an understanding of data science and machine learning, esp deep learning. If you are looking to pursue a career as an ML Engineer, Data Scientist, or Deep Learning Engineer, we recommend acquiring a Advanced Certificate Programme in Machine Learning & Deep Learning.

This course will help you become well-versed with the concepts of Statistics, Regression, Clustering Algorithms, Neural Networks, Object Detection, and Gesture Recognition. Not just that, it will help you build expertise in OpenCV, Python, TensorFlow, MySQL, Keras, Excel, and NumPy, among other programming tools and libraries, and help stand out in the crowd.

Lead the AI Driven Technological Revolution

Advanced Certificate Programme in Machine Learning & Deep Learning
APPLY NOW

0 replies on “Top 10 Exciting OpenCV Project Ideas & Topics for Freshers & Experienced [2021]”

Accelerate Your Career with upGrad

Our Popular Machine Learning Course

×