opencv
logo Axopen

17+

années
d'expérience

60+

experts
techniques

100K

écoutes de notre podcast

OpenCV, c’est quoi ?

Présentation de la solution de traitement d’image OPENCV et retour sur expérience.

thomasC.jpg
Thomas CHABOUD
Mis à jour le 25 Mars 2024

Présentation générale d’OPENCV

Initialement développée par Intel, OpenCV (Open Computer Vision) est une bibliothèque graphique. Elle est spécialisée dans le traitement d’images, que ce soit pour de la photo ou de la vidéo.

Sa première version est sortie en juin 2000. Elle est disponible sur la plupart des systèmes d’exploitation et existe pour les langages Python, C++ et JavaLangage de développement très populaire !

opencv-logo.png

Sous licence BSD (Berkeley Software Distribution Licence), OpenCV peut être réutilisé librement, en tout ou partie, pour être intégré au sein d’un autre projet.

C’est notament cette notion qui fait qu’OpenCV est très populaire et à la base de nombreux logiciels de traitements d’images/vidéos. Elle est aujourd’hui développée, maintenue, documentée et utilisée par une communauté de plus de 40 000 membres actifs !

Fonctionnement d’OpenCV

Pour comprendre le fonctionnement d’OpenCV, il faut d’abord définir ce qu’est la vision par ordinateur. Branche de l’IA, la vision par ordinateur a pour principal but de permettre à une machine d’analyser, traiter et comprendre des images prises par un système (une caméra par exemple)

OpenCV fournit un ensemble de plus de 2500 algorithmes de vision par ordinateur, accessibles au travers d’API. Ce qui permet d’effectuer tout un tas de traitements sur des images (extraction de couleurs, détection de visages, de formes, application de filtres,...). Ces algorithmes se basent principalement sur des calculs mathématiques complexes, concernant surtout les traitements sur les matrices (car une image peut être considérée comme une matrice de pixels).

Les traitements d’images

Les algorithmes d’OpenCV permettent d’appliquer divers traitements sur les images pour faciliter la détection d’éléments précis dans celles-ci. Voici quelques exemples :

  • Le Tresholding (seuillage) d’une image permet de définir une valeur de pixel (correspondant à une couleur) qui servira de seuil. Au-dessus ou en dessous de cette valeur (selon l’agorithme), tous les pixels se verront assigner une autre valeur. Il existe 4 algorithmes de Tresholding. 

    threshold.jpg

  • Les filtres de lissage, permettant de réduire le bruit (1) d’une image. Parmi eux, nous avons notamment les filtres par convolution, se basant sur les pixels voisins pour faire une moyenne. 

    image-denoising.jpg

  • Les filtres morphologiques permettant, sur une image binaire (uniquement noire et blanche avec le fond en noir et l’objet sur lequel on effectue le traitement en blanc) d’appliquer une érosion ou dilatation, c’est-à-dire affiner l’objet pour l’érosion et l’élargir pour la dilatation. | Image de base | Après application de l’érosion | Après application de la dilatation | | ------------ | ------------- | ------------- | | 

    morphological-1.png
    morphological-erosion.png
    morphological-dilatation.png
    |

Il est possible de combiner l’érosion et la dilatation pour la suppression de bruit dans une image. L’application de l’érosion puis dilatation est appelé Opening (Ouverture) et l’application de la dilatation puis de l’érosion est appelé Closing (Fermeture) 

morphological-opening.png

Opening (Erosion -> Dilatation)

Closing (Dilatation -> Erosion)

(1) : Le bruit (ou bruit numérique) d’une image définie toute information parasite ou dégradation que subit l’image de son acquisition jusqu’à son enregistrement, cela peut dépendre de plusieurs paramètres comme la luminosité, la qualité du capteur optique, etc

L’intelligence artificielle

Certains algorithmes d’OpenCV utilisent de l’intelligence artificielle pour faciliter le traitement des images. Dans les faits, cette IA sert à améliorer les algorithmes précédemment détaillés pour obtenir des résultats plus précis. 

denoising-ai.jpg

Ici, on utilise un filtre de convolution couplé à de l’intelligence artificielle pour obtenir un meilleur résultat que si nous n’avions utilisé que le filtre.

Exemple d’utilisation d’OpenCV

Dans le cadre d’un projet chez Axopen, nous utilisons OpenCV pour gérer un match de babyfoot en repérant les joueurs ainsi que la balle, avec pour objectif de déterminer les buts et qui les a marqués : 

atelier-babyfoot.png

De la même manière, les logiciels d’arbitrage vidéo se basent bien souvent sur OpenCV pour reconnaître les joueurs, déterminer leur équipe et détecter la balle sur le terrain, en se basant sur les couleurs de chaque élément.

Plus récemment, c’est aussi OpenCV qui est à la base du logiciel DeepFake, permettant de changer le visage d’une personne par une autre sur une vidéo, qui a fait beaucoup parler de lui ces derniers temps.

Ici, OpenCV est utilisé pour reconnaître un visage sur une vidéo et le remplacer. Via de nombreuses photos de Sylvester Stallone, on entraîne une IA qui sera capable de remplacer le visage (ici celui de Arnold Schwarzenegger) détecté par OpenCV par celui souhaité.

Les possibilités offertes par OpenCV sont nombreuses, si vous souhaitez allez plus loin et tester par vous-même, vous pouvez consulter nos tutos d’installation pour Windows et Mac !

Il est également possible de consulter la documentation de OpenCV ici : https://docs.opencv.org/master/

Pour aller plus loin

Souveraineté Numérique : pourquoi l'indépendance technologique est cruciale en 2024 ?

La souveraineté numérique est devenue un enjeu majeur dans un monde où les données et les infrastructures technologiques jouent un rôle central dans la vie quotidienne, aussi bien pour les individus que pour les entreprises ou les États. Concrètement, elle se définit comme la capacité à contrôler entièrement ses infrastructures sans dépendre de solutions étrangères. C’est un défi complexe à relever dans un contexte de mondialisation et d'interdépendance technologique croissante ! Pour les entreprises de développement, en particulier, cette souveraineté représente bien plus qu'une question de cybersécurité ou de protection des données personnelles : elle touche à l'indépendance technologique et à la maîtrise des outils stratégiques. Dans cet article, nous nous intéresserons à l’importance de la souveraineté numérique, notamment face à la domination des géants du cloud, et comment des pays comme la France tentent de préserver leur autonomie dans ce secteur.

Small right arrow

Comment utiliser SonarQube pour suivre et gérer la dette technique de vos projets ?

Dans cet article, nous allons explorer en détail comment utiliser SonarQube pour évaluer et améliorer la qualité de votre code, en mettant l'accent sur ses fonctionnalités clés telles que les profils qualité, les barrières qualité et l'intégration dans vos pipelines de développement. Découvrez comment SonarQube peut vous aider à maintenir un code de haute qualité et à éviter l'accumulation de dette technique.

Small right arrow

Comment comparer 2 schemas Mysql ?

Qui n’a jamais eu le besoin de comparer 2 schemas de base de données Mysql après avoir oublier de noter l’ensemble des modifications apportées à un environnement ?

Small right arrow