Top 10 des idées et des sujets de projets OpenCV passionnants pour les débutants et les expérimentés [2022]

Publié: 2021-05-27

OpenCV ou Open Source Computer Vision Library est une puissante bibliothèque d'apprentissage automatique et basée sur l'IA utilisée pour développer et résoudre des problèmes de vision par ordinateur. La vision par ordinateur comprend la formation d'un ordinateur pour comprendre et comprendre le monde visuel, identifier les éléments et y répondre à l'aide de modèles d'apprentissage en profondeur. Aujourd'hui, les entreprises du monde entier l'utilisent dans la manipulation d'images, le traitement, la détection de visage, la reconnaissance vocale, le suivi de mouvement et la détection d'objets.

Des entreprises comme Google, Facebook, Microsoft et Intel déploient déjà OpenCV pour développer des applications de vision par ordinateur. Mark Zuckerberg, dans une interview en 2015, avait fait remarquer : « Si nous sommes capables de construire des ordinateurs capables de comprendre ce qu'il y a dans une image et de dire à une personne aveugle qui, autrement, ne pourrait pas voir cette image, ce serait également assez étonnant.

Aujourd'hui, la technologie OpenCV s'est avérée être une percée pour les personnes aveugles ou malvoyantes. Il leur permet de se familiariser avec un environnement inconnu et de reconnaître les objets et les personnes à proximité pour pallier cette déficience visuelle. La vision par ordinateur est également la technologie derrière les voitures autonomes et les dispositifs de détection de mouvement intelligents.

Si vous envisagez une carrière dans la vision par ordinateur, voici dix projets de CV ouverts intéressants pour vous aider à acquérir une expérience du monde réel. Alors, commençons!

Table des matières

Top 10 des projets de CV ouverts à vérifier en 2022

Projet 1 : Détecter la pneumonie à l'aide d'EdgeML

Ce projet OpenCV vise à déployer un logiciel de détection de pneumonie basé sur l'IA sur votre Raspberry Pi. Il utilise le système Edge Machine Learning pour convertir un Raspberry Pi avec une caméra en un classificateur de pneumonie à l'aide des multi-conteneurs de Balena.

Un deuxième conteneur est ajouté à Balena qui exécute le moteur d'inférence Edge Impulse WebAssembly au sein d'un serveur Node.js. Les deux conteneurs communiquent via WebSockets pour permettre à la BalenaCam de diffuser en direct chaque seconde du flux de votre caméra sur la page Web.

Les logiciels et outils utilisés dans le projet incluent OpenCV, Edge Impulse Studio, TensorFlow Lite, GitHub Desktop, balenaCloud, Microsoft VS Code et Docker. Les navigateurs Web prenant en charge Balena Cam sont Chrome, Safari, Firefox et Edge.

Vous pouvez consulter le projet ici .

Projet 2 : Capteur de mouvement alimenté par OpenCV pour SmartThings de Samsung

Tout d'abord, vous avez besoin d'un Raspberry Pi 3 avec un PiCam fonctionnel sur lequel OpenCV a été installé précédemment. Ce projet vise à créer un capteur de mouvement personnalisé pour SmartThings alimenté par la vision par ordinateur et à détecter les visages. Les données collectées sont envoyées à SmartThings sur LAN - UPnP.

Pour ce faire, nous créons un gestionnaire de périphérique pour SmartThings et le programmons. Nous utilisons ensuite un script Python pour accéder aux images de la caméra, détecter les visages et coupler le Raspberry Pi à découvrir par SmartThings. Vous devez également installer imutils que vous pouvez vous procurer à partir de GitHub.

Consultez le code source du projet ici .

Projet 3 : Photographie computationnelle

Ce projet consiste à créer des panoramas, à éliminer le bruit et les objets indésirables des images et à augmenter la visibilité des photographies cliquées en basse lumière. La photographie computationnelle implique des algorithmes de débruitage photo pour supprimer le bruit blanc gaussien et la distorsion, la restauration photo pour filtrer les lignes, les objets et les éléments indésirables, et la reconnaissance de plaque d'immatriculation pour détecter la plaque d'immatriculation en reconnaissant les caractères.

Projet 4 : créer un filigrane sur des images à l'aide d'OpenCV

Ce projet est un didacticiel sur la façon dont vous pouvez créer un filigrane - signature, logo ou tampon d'eau pour empêcher l'utilisation abusive ou la violation des droits d'auteur - sur une image à l'aide de la bibliothèque de vision par ordinateur ouverte. Il vous permet de filigraner une image originale en utilisant à la fois l'image et le texte à l'aide de la bibliothèque OpenCV de Python. Pour créer un filigrane à l'aide d'une image, vous devez définir la fonction transparente et la fonction d'ajout d'image. Dans le cas du texte, nous importons la fonction PIL, puis ajustons la position du filigrane du texte.

Vous pouvez consulter le projet ici .

Projet 5 : Trouver Waldo

Il s'agit d'un projet de détection d'objets pour détecter Waldo dans une image en entraînant une IA à reconnaître Waldo à partir d'une série d'images différentes. Nous utilisons ensuite une approche statique pour trouver Waldo par correspondance de pixels. Ceci est important car si vous utilisez une image modèle, la correspondance statique ne s'appliquera qu'à cette image particulière et non à une nouvelle image de Waldo.

Nous calculons le coefficient de corrélation pour effectuer la mise en correspondance des modèles, qui prend en entrée le modèle Waldo et le fait glisser pixel par pixel sur l'image dans laquelle Waldo doit être détecté. Le coefficient de corrélation indique si les emplacements des pixels sont une "bonne" ou une "mauvaise" correspondance.

Vous pouvez consulter le projet ici .

Projet 6 : Voitures autonomes

Ce projet utilise la manipulation et le traitement d'images à l'aide d'OpenCV pour créer des voitures autonomes. Pour entraîner une voiture à conduire par elle-même, nous devons la familiariser avec les voies de la rue, les trouver et nous concentrer sur leur maintien. Cela signifie qu'un modèle d'apprentissage automatique nécessite une expertise dans l'identification de la région d'intérêt par une détection astucieuse des contours et une transformation des lignes hautes pour séparer les pixels d'une image qui représente les voies de la rue. Cela nécessite également de masquer et de calculer des points de pente moyenne.

Voici le code source permettant d'identifier la région d'intérêt :

importer numpy en tant que np

de matplotlib importer pyplot en tant que plt

image = cv2.imread('../../images/input.jpg')

Dans [8] :

image.forme

Sortie[8] :

(830, 1245, 3)

Dans [11] :

x, y = image.forme[:2]

Dans [3] :

hauteur, largeur = image.forme[:2]

# Pour obtenir les coordonnées du pixel de départ (en haut à gauche du rectangle de recadrage)

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

# Pour obtenir les coordonnées du pixel de fin (en bas à droite)

fin_ligne, fin_col = int(hauteur * .75), int(largeur * .75)

# Utilisation de l'indexation pour recadrer la section d'image que nous désirons

recadré = image[start_row:end_row , start_col:end_col]

Dans [6] :

rangée, 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('Image originale')

cv2.imwrite('original_image.png', image)

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

axs[1].set_title('Image recadrée')

cv2.imwrite('cropped_image.png', recadré)

plt.show()

Découvrez le projet ici .

Projet 7 : Reconnaissance faciale et vocale pour les malvoyants

Ce projet vise à aider les personnes malvoyantes en convertissant l'entrée faciale en sortie vocale à l'aide d'un Raspberry Pi 2 modèle B et d'un module de caméra Raspberry Pi. C'est l'un des projets de cv ouverts les plus populaires en 2022. Le logiciel permet aux personnes aveugles ou malvoyantes de détecter des signes, des textes ou des personnes dans un environnement inconnu, de naviguer sans assistance. Parmi les autres exigences du projet figurent OpenCV et Python pour effectuer la reconnaissance faciale, et la reconnaissance vocale est réalisée à l'aide de GNU Octave.

Vous pouvez consulter le code ici .

Projet 8 : Modèle de présence intelligent

Un système de présence intelligent est un outil pratique pour les modèles d'éducation en ligne tels que ZoomApp. Il vous aide à suivre les étudiants qui assistent à votre cours Zoom en surveillant leur présence en temps réel. Tout ce qui doit être fait est d'obtenir une capture d'écran de l'étudiant avec la date incluse et de la télécharger dans un fichier Excel.

Vous pouvez trouver un tutoriel pour ce projet de CV ouvert ici .

Projet 9 : Échange de visage avec OpenCV

Les applications et les filtres d'échange de visages sont à la mode sur les réseaux sociaux depuis un certain temps déjà. Qu'il s'agisse d'apparaître jeunes ou vieux ou de convertir des images fixes en images animées, les goûts d'Instagram, Snapchat et FaceApp ont tous pris le train en marche. Les applications d'échange de visages sont relativement faciles à créer avec OpenCV et Python.

Les étapes consistent à placer une image source sur une image de destination à l'aide d'un triangle formé à l'aide du détecteur de point de repère dlib.

Découvrez le projet ici .

Projet 10 : Détecter les contours et compter les formes

Le projet détecte les contours ou les contours d'une forme donnée pour déterminer le type de forme d'un objet. Par exemple, si une image contient des bouchons de bouteille, vous pouvez utiliser la forme ronde pour déterminer le nombre de bouchons de bouteille dans l'image.

Voici le code source pour le faire :

importer numpy en tant que np

de matplotlib importer pyplot en tant que plt

En 2]:

image = cv2.imread('../../images/bottlecaps.jpg')

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

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

plt.title('bouteilles'); plt.show()

cv2.imwrite('bottlecaps_input.jpg', gris)

Sortie[2] :

Vrai

Dans [3] :

flou = cv2.medianBlur(gray, 5)

cercles = cv2.HoughCircles(flou, cv2.HOUGH_GRADIENT, 1.5, 10)

pour je dans les cercles[0,:] :

# dessine le cercle extérieur

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

# dessine le centre du cercle

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

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

plt.title('Cercles détectés'); plt.show()

cv2.imwrite('detected_circles.jpg', image)

Sortie[3] :

Vrai

Dans [ ]:

D'autre part, le comptage des formes implique l'application d'algorithmes pour segmenter les images et regrouper les données afin de déterminer les points d'intérêt dans une image. Nous utilisons des contours binaires et approchés à l'aide de la fonction approxPolyDP.

Vous pouvez consulter ce projet de CV ouvert ici .

Dernières pensées

La vision par ordinateur vous permet de développer une large gamme d'applications utiles telles que la transformation d'images, la traduction, la détection de contours, la segmentation d'images, la détection d'objets, le suivi d'objets et l'analyse de mouvement.

Il est également utilisé en réalité augmentée (AR) en apprenant à localiser des visages, à détecter des formes, etc., à reconnaître des objets et des visages. Vous pouvez également créer des projets Open CV intéressants à l'aide d'un apprentissage automatique simple, tel qu'un lecteur de carte de crédit, un détecteur de chiffres manuscrits ou un lecteur de visage.

Cependant, cela nécessite une compréhension de la science des données et de l'apprentissage automatique, en particulier de l'apprentissage en profondeur. Si vous cherchez à poursuivre une carrière en tant qu'ingénieur ML, scientifique des données ou ingénieur en apprentissage profond, nous vous recommandons d'acquérir un programme de certificat avancé en apprentissage automatique et en apprentissage profond .

Ce cours vous aidera à bien maîtriser les concepts de statistiques, de régression, d'algorithmes de clustering, de réseaux de neurones, de détection d'objets et de reconnaissance de gestes. Non seulement cela, cela vous aidera à développer une expertise dans OpenCV, Python, TensorFlow, MySQL, Keras, Excel et NumPy, entre autres outils de programmation et bibliothèques, et vous aidera à vous démarquer dans la foule.

Qu'est-ce qu'OpenCV ?

OpenCV est une bibliothèque open-source pour le traitement d'images et la vision par ordinateur, maintenue par Intel et désormais prise en charge par une communauté de développeurs. Étant open source, OpenCV utilise la puissance de toute la communauté des développeurs. La bibliothèque est conçue pour être optimisée pour les applications en temps réel, telles que la reconnaissance d'objets, la vidéosurveillance, l'interaction homme-machine, la médecine et d'autres domaines connexes.

Qu'est-ce que la détection d'objet ?

La détection d'objets est le processus de localisation d'objets dans des images ou des vidéos qui ne sont pas trivialement faciles à détecter. Ce problème est généralement formulé comme une instance de classification. Étant donné une image, nous voulons classer ses différents objets (comme les voitures, les piétons et les bâtiments) ainsi que leurs boîtes englobantes qui, à leur tour, nous donneraient leur emplacement. La détection d'objets consiste à identifier des objets dans une image. Le but de la détection d'objets est de trouver l'emplacement d'objets dans une image (c'est-à-dire de les localiser) et d'estimer leur taille et leur forme. La détection d'objets est un problème difficile car les objets sont souvent partiellement occultés et ont parfois une énorme variété d'apparences, ainsi que des déformations non rigides dans l'image.

Quel est l'algorithme de détection d'objet le plus précis ?

Il existe de nombreux algorithmes de détection d'objets et aucun d'entre eux n'est précis à 100 %. Les algorithmes de détection d'objets sont confrontés à un problème de surajustement des données. En fait, certains chercheurs en vision par ordinateur affirment que les algorithmes de détection d'objets ne peuvent pas être précis à 100 %. Mais, il existe de nombreux algorithmes qui donnent des résultats précis pour un ensemble de données donné. Si vous pouvez vous permettre une machine GPU, nous vous suggérons d'utiliser l'implémentation SVM basée sur OpenCV pour la détection d'objets. Il est très précis, rapide et fonctionne sur un très grand ensemble de données. Cependant, il ne gère pas très bien l'occlusion. Si vous souhaitez créer un détecteur de visage, optez pour l'implémentation du classificateur en cascade Haar dans OpenCV.