- Que sont les images?
- Comment l'ordinateur stocke les images
- Pourquoi il est difficile pour une machine d'identifier les images
- Application et utilisations d'OpenCV
- Installer OpenCV avec Python et Anaconda
- Ouverture et enregistrement d'images dans OpenCV
- Image à l'échelle grise dans OpenCV
- Espaces de couleur
- Explorer les composants individuels de l'image RVB
- Conversion d'image en composant RVB individuel
- Représentation histogramme de l'image
- Dessiner des images et des formes à l'aide d'OpenCV
L'art est une façon de voir, et ils disent que voir c'est croire, mais le contraire est également vrai, croire c'est voir et il est vraiment difficile d'imaginer vivre dans ce monde sans le don de la vision - nos yeux, à quel point c'est merveilleux d'être un bébé quand nos yeux s'ouvrent, nous voyons le monde et commençons à reconnaître et à voir le monde qui nous entoure, mais au fil du temps, la même expérience merveilleuse devient une expérience banale. Mais au fur et à mesure que nous progressons avec la technologie, nous sommes à un point où les machines sont également capables de la voir et de la comprendre. Actuellement, cela ne semble pas être une science-fiction si vous déverrouillez simplement votre téléphone avec votre visage, mais l'histoire du développement de la vision industrielle remonte à plus de 20 ans.
La première étape formelle dans ce domaine a été prise en 1999 dans une initiative d'Intel, lorsque toutes les recherches en cours ont été collaborées sous le CV OPEN (Open Source Computer Vision), initialement écrit en C ++, avec sa première version majeure 1.0 en 2006 seconde en 2009, troisième en 2015 et quatrième tout à l'heure en 2018. Maintenant, OpenCV a des interfaces C ++, Python et Java et prend en charge Windows, Linux, Mac OS, iOS et Android. Il peut donc être facilement installé dans Raspberry Pi avec l'environnement Python et Linux. Et Raspberry Pi avec OpenCV et caméra connectée peut être utilisé pour créer de nombreuses applications de traitement d'image en temps réel telles que la détection de visage, le verrouillage du visage, le suivi d'objet, la détection de plaque d'immatriculation de voiture, le système de sécurité domestique, etc.
Avant de commencer à apprendre le traitement d'images avec openCV, il est important de savoir ce que sont les images et comment les humains et les machines perçoivent ces images.
Que sont les images?
Les images sont une représentation bidimensionnelle du spectre de la lumière visible. Et le spectre de la lumière visible n'est qu'une partie du spectre électromagnétique qui se situe entre le spectre infrarouge et ultraviolet.
Comment se forment les images: - lorsqu'une lumière se reflète sur un objet sur un film, un capteur ou sur la rétine.
C'est ainsi que nos yeux fonctionnent, en utilisant une barrière pour bloquer le plus de points de lumière en laissant une petite ouverture à travers laquelle la lumière peut passer, elle est appelée ouverture, et elle forme une image très focalisée et est un modèle de travail pour une caméra à trou d'épingle, mais il y a un problème dans une caméra à trou d'épingle, cette même quantité de lumière entrera dans l'ouverture, ce qui ne pourrait pas convenir au film ou à l'image formé.Nous ne pouvons pas non plus obtenir une image focalisée, afin de focaliser l'image que nous besoin de déplacer le film d'avant en arrière, mais cela pose problème dans de nombreuses situations.
Ou nous pouvons résoudre ce problème en utilisant des objectifs, cela nous permet de contrôler la taille d'ouverture, et en photographie, c'est ce qu'on appelle f Stop, généralement abaisser la valeur de f Stop, c'est mieux en photographie.
La taille d'ouverture nous permet également d'entrer dans une belle profondeur de champ appelée Bokeh en photographie, cela nous permet d'avoir un arrière-plan flou pendant que nous nous concentrons sur l'image.
Comment l'ordinateur stocke les images
Vous avez peut-être entendu parler de divers formats d'image tels que.png,.jpgG, etc. tout cela est une représentation numérique de notre monde analogique, les ordinateurs le font en traduisant l'image en code numérique pour le stockage, puis en interprétant le fichier en une image pour afficher. Mais à la base, ils utilisent une plate-forme commune pour stocker les images, et il en va de même pour l'openCV.
OpenCV utilise par défaut l'espace colorimétrique RVB (rouge, vert et bleu) pour ses images, où chaque coordonnée de pixel (x, y) contient 3 valeurs allant des intensités au format 8 bits, c'est-à-dire (0-255, 2 8).
Le mélange de différentes intensités de chaque couleur nous donne le spectre complet, c'est pourquoi en peinture ou en art ces trois couleurs sont considérées comme des couleurs primaires et toutes les autres comme secondaires, car la plupart des couleurs secondaires peuvent être formées par des couleurs primaires. Comme pour le jaune, nous avons les valeurs suivantes: Rouge - 255; Vert - 255; Bleu - 0.
Désormais, les images sont stockées dans des tableaux multidimensionnels. En programmation, array est une série de collections d'objets. Et ici, nous traitons trois types de tableaux 1D, 2D et 3D où «D» signifie dimensionnel.
Les images colorées sont stockées dans des tableaux en trois dimensions, où les troisièmes dimensions représentent les couleurs RVB (que nous verrons plus tard), et ensemble, elles forment différentes intensités de pixels pour une image, tandis que les images en noir et blanc sont stockées dans des tableaux à deux dimensions et il existe également deux types d'images en noir et blanc en niveaux de gris et des images binaires.
Les images en niveaux de gris sont formées à partir des nuances de gris d'un tableau à deux dimensions, tandis que les images binaires sont des pixels de noir ou de blanc.
Pourquoi il est difficile pour une machine d'identifier les images
La vision par ordinateur est une tâche difficile en soi, vous pouvez imaginer à quel point il est difficile de donner à une machine un sens de vision, de reconnaissance et d'identification. Les facteurs suivants rendent la vision par ordinateur si difficile.
- Limitations du capteur et de l'objectif de l'appareil photo
- Voir les variations de points
- Changer l'éclairage
- Mise à l'échelle
- Occlusions
- Variations de classe d'objets
- Images ambiguës / illusions d'optique
Application et utilisations d'OpenCV
Malgré la difficulté, Computer Vision a de nombreuses réussites
- Navigation robotique - Voitures autonomes
- Détection et reconnaissance de visage
- Recherche d'images dans les moteurs de recherche
- Lecture de la plaque d'immatriculation
- Reconnaissance de l'écriture manuscrite
- Filtres Snapchat et visage
- Reconnaissance d'objets
- Suivi des balles et des joueurs dans le sport
- Et beaucoup plus!
Installer OpenCV avec Python et Anaconda
OpenCV est écrit en C ++, mais il est très difficile de l'implémenter avec C ++ et c'est pourquoi nous choisissons de l'implémenter avec un langage de haut niveau comme python, et il y a aussi des avantages supplémentaires à implémenter OpenCV avec python car Python est l'un des langages les plus simples pour les débutants également Il est extrêmement puissant pour les applications de science des données et d'apprentissage automatique et stocke également les images dans des tableaux numpy, ce qui nous permet d'effectuer assez facilement des opérations très puissantes.
La programmation de base est utile avec Exposure to High School Level Math, une webcam, Python 2.7 ou 3.6 (le package Anaconda est préférable).
Étape 1. Téléchargez et installez le package Anaconda Python
Allez sur: https://www.anaconda.com/download et choisissez en fonction de la météo de votre machine ses fenêtres, Linux ou mac et vous pouvez choisir la version python 2.7 ou python 3.7 pour les systèmes 64 bits ou 32 bits, mais maintenant un jour, la plupart des systèmes sont 64 bits.
La distribution Anaconda de python est fournie avec Spyder studio, les notebooks jupyter et l'invite anaconda, ce qui rend python super convivial à utiliser. Nous utiliserions spyder studio pour faire les exemples.
Le choix entre python 2.7 ou 3.7 est complètement neutre, mais cependant pour les exemples, nous utiliserions python 3.7 car c'est l'avenir de python et prendra le relais de python 2.7 forme 2020, la plupart des bibliothèques sont également développées en python 3.7 en gardant l'aspect futur de python à l'esprit. En outre, il donne également les résultats attendus sur les opérations mathématiques de base telles que (2/5 = 2.5), tandis que python 2.7 l'évaluerait à 2. Aussi print est traité comme une fonction en python 3.7 (print ("bonjour")), donc il donne la main aux programmeurs.
Étape 2. Création d'une plateforme virtuelle avec OpenCV
Nous allons installer OpenCV en créant une plate-forme virtuelle pour spyder en utilisant l'invite Anaconda et le fichier YML téléchargé ici.
Avec les fichiers YML, nous installerons tous les packages et bibliothèques nécessaires, mais si vous souhaitez installer des packages supplémentaires, vous pouvez facilement installer via l'invite anaconda, en exécutant la commande de ce package.
Accédez à l'icône de recherche de Windows et trouvez le terminal d'invite anaconda, vous pouvez le trouver dans votre dossier anaconda que vous venez d'installer.
Ensuite, vous devez trouver votre fichier YML téléchargé, et à partir de là, vous avez deux choix soit en changeant le répertoire de votre terminal à l'emplacement où votre fichier YML est téléchargé, soit en copiant votre fichier YML dans le répertoire où votre anaconda est installé le plus cas, il serait à l'intérieur du lecteur C: \, après avoir copié votre fichier YML à l'emplacement spécifié, exécutez la commande suivante à votre invite
conda env create –f virtual_platform_windows.yml
Puisque mon système fonctionne sous Windows, le fichier YML et la commande correspondent aux fenêtres, cependant vous pouvez modifier en fonction de votre système en remplaçant windows par linux ou mac respectivement.
Remarque: - Si l'extraction du paquet donne une erreur, installez d'abord pytorch et numpy , puis exécutez la commande ci-dessus.
Maintenant, trouvez le navigateur anaconda et il y aurait un menu déroulant de «Applications sur ___» et à partir de là, sélectionnez l'environnement virtuel, puis à partir de là, vous devez lancer Spyder studio.
Et voilà, vous êtes prêt à vous lancer!
Ouverture et enregistrement d'images dans OpenCV
Ici, nous expliquons quelques commandes de base et la terminologie pour utiliser Python dans OpenCV. Nous allons découvrir trois fonctions de base d'OpenCV imread, imshow et imwrite.
Les #comments en python sont donnés par # symbol
Importer opencv en python par commande
importer cv2
Chargez une image en utilisant 'imread' en spécifiant le chemin d'accès à l'image
image = cv2.imread ('input.jpg')
Maintenant, cette image est chargée et stockée en python en tant que variable que nous avons nommée image
Maintenant, pour afficher notre variable d'image, nous utilisons 'imshow' et le premier paramètre de la fonction imshow est le titre affiché sur la fenêtre d'image, et il doit être entré dans ('') pour représenter le nom sous forme de chaîne
cv2.imshow ('bonjour le monde', image)
waitkey nous permet de saisir des informations lorsque la fenêtre d'image est ouverte, en la laissant vide, elle attend juste qu'une touche soit pressée avant de continuer, en plaçant des nombres (sauf 0), nous pouvons spécifier un délai pendant combien de temps vous gardez la fenêtre en millisecondes ici).
cv2.waitKey ()
'destroyAllWindows' ferme toutes les fenêtres ouvertes, si vous ne le placez pas, votre programme se bloquera.
cv2.destroyAllWindows ()
, pour cela, nous utiliserons numpy, numpy est une bibliothèque pour la programmation python permettant d'ajouter la prise en charge de grands tableaux et matrices multidimensionnelles.
import cv2 #importing numpy import numpy as np image = cv2.imread ('input.jpg') cv2.imshow ('hello_world', image) La fonction #shape est très utile lorsque nous regardons les dimensions d'un tableau, elle renvoie un tuple qui donne une dimension d'une image print (image.shape) cv2.waitKey () cv2.destroyAllWindows ()
sortie de la console - (183, 275, 3), Les deux dimensions de l'image sont 183 pixels de hauteur et 275 pixels de largeur et 3 signifie qu'il y a trois autres composants (R, V, B) qui font cette image (il montre que les images colorées sont stockées dans des tableaux tridimensionnels).
print ('Hauteur de l'image:', (image.shape, 'pixels')) print ('Largeur de l'image:', (image.shape, 'pixels'))
sortie de la console - Hauteur de l'image: (183, 'pixels')
Largeur de l'image: (275, 'pixels')
Enregistrer l'image modifiée dans OpenCV
Nous utilisons «imwrite» pour spécifier le nom du fichier et l'image à enregistrer.
cv2.imwrite ('output.jpg', image) cv2.imwrite ('output.png', image)
Le premier argument est le nom du fichier que nous voulons enregistrer, {lire ou enregistrer le fichier que nous utilisons ('') pour l'indiquer sous forme de chaîne} et le second argument est le nom du fichier.
OpenCV vous permet d'enregistrer l'image dans différents formats.
Image à l'échelle grise dans OpenCV
La mise à l'échelle des gris est le processus par lequel une image est convertie d'une couleur complète en nuances de gris (noir et blanc)
Dans opencv, de nombreuses fonctions mettent les images en gris avant le traitement. Ceci est fait car cela simplifie l'image, agissant presque comme une réduction du bruit et augmentant le temps de traitement car il y a moins d'informations dans l'image (car les images en niveaux de gris sont stockées dans des tableaux à deux dimensions).
import cv2 # charge notre image d'entrée image = cv2.imread ('input.jpg') cv2.imshow ('original', image) cv2.waitKey () # nous utilisons cvtcolor, pour convertir en niveaux de gris gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('niveaux de gris', image_grise) cv2.waitKey () cv2.destroyALLWindows ()
Un moyen plus simple de convertir l'image en niveaux de gris consiste simplement à ajouter l'argument 0 dans la fonction imread à côté du nom de l'image
import cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('niveaux de gris', image_grise) cv2.waitKey () cv2.destroyAllWindows ()
import cv2 import numpy as np image = cv2.imread ('input.jpg') print (image.shape) cv2.imshow ('original', image) cv2.waitKey () gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('niveaux de gris', image_grise) print (image_grise.shape) cv2.waitKey () cv2.destroyALLWindows ()
Sortie console: - (183, 275, 3) - pour image couleur
(183, 275) - pour une image en niveaux de gris
Par conséquent, il montre clairement que les images colorées sont représentées par des tableaux en trois dimensions, tandis que les images en échelle de gris par des tableaux en deux dimensions.
Espaces de couleur
Les espaces couleur sont la manière dont les images sont stockées. RVB, HSV, CMJN sont les différents espaces colorimétriques, ce ne sont que des moyens simples de représenter la couleur.
RVB - Rouge, vert et bleu.
HSV - Teinte, saturation et valeur.
Et CMJN est couramment utilisé dans les imprimantes à jet d'encre.
Espace colorimétrique RVB ou BGR
L'espace colorimétrique par défaut d'OpenCV est RVB. RVB est un modèle de couleur additif qui génère des couleurs en combinant des couleurs bleues, vertes et rouges de différentes intensités / luminosité. Dans OpenCV, nous utilisons des profondeurs de couleurs de 8 bits.
- Rouge (0-255)
- Bleu (0-255)
- Vert (0-255)
Cependant OpenCV stocke réellement la couleur au format BGR.
Fait amusant: - Nous utilisons l'ordre BGR dans les ordinateurs en raison de la façon dont les entiers 32 bits non signés sont stockés en mémoire, il finit toujours par être stocké en RVB. L'entier représentant une couleur, par exemple: - 0X00BBGGRR sera stocké sous la forme 0XRRGGBB.
Espace colorimétrique HSVHSV (Hue, Saturation & Value / Brightness) est un espace colorimétrique qui tente de représenter les couleurs que les humains perçoivent. Il stocke les informations de couleur dans une représentation cylindrique des points de couleur RVB.
Teinte - valeur de couleur (0-179)
Saturation - Vibrance de la couleur (0-255)
Valeur - Luminosité ou intensité (0-255)
Le format d'espace colorimétrique HSV est utile pour la segmentation des couleurs. En RVB, filtrer une couleur spécifique n'est pas facile, mais HSV facilite beaucoup la définition de plages de couleurs pour filtrer des couleurs spécifiques telles que nous les percevons.
La teinte représente la couleur en HSV, la valeur de la teinte varie de 0 à 180 et non de 360, donc elle ne complète pas le cercle complet et est donc mappée différemment de la norme.
Filtres de gamme de couleurs
- Rouge - (165-15)
- Vert - (45-75)
- Bleu - (90-120)
Comme nous connaissons les images stockées dans l'espace colorimétrique RVB (rouge, vert et bleu), OpenCV nous montre la même chose, mais la première chose à retenir à propos du format RVB d'opencv est qu'il s'agit en fait de BGR et nous pouvons le savoir en regardant le forme de l'image.
import cv2 import numpy as np image = cv2.imread ('input.jpg') # B, G, R valeur pour le premier 0,0 pixel B, G, R = image print (B, G, R) print (image.shape) # maintenant si nous l'appliquons sur une image en niveaux de gris gray_img = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) print (gray_img.shape) #gray_image valeur de pixel pour une impression de 10,50 pixels (gray_img)
Sortie console: impression (B, G, R) - 6 11 10
impression (image.shape) - (183, 275, 3)
imprimer (gray_img.shape) - (183, 275)
imprimer (gray_img) - 69
Maintenant, il n'y a que deux dimensions dans une image en échelle de gris, puisque nous nous souvenons que l'image couleur est stockée en trois dimensions, la troisième dimension étant le (R, V, B) tandis qu'en échelle de gris, seules deux dimensions sont présentes, puisque (R, G, B) est absent et pour une position de pixel particulière, nous n'obtenons qu'une seule valeur alors que dans l'image colorée, nous avons trois valeurs.
HSV est un autre espace colorimétrique utile
import cv2 image = cv2.imread ('input.jpg') hsv_image = cv2.cvtColor (image, cv2.COLOR_BGR2HSV) cv2.imshow ('HSV image', hsv_image) cv2.imshow ('Hue channel', hsv_image) cv2. imshow ('saturation channel', hsv_image) cv2.imshow ('value channel', hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
Après avoir exécuté le code, vous pouvez voir les quatre images dont trois sont des canaux individuels et une est une image HSV combinée.
L'image du canal Hue est assez sombre car sa valeur ne varie que de 0 à 180.
Notez également que la fonction imshow essaie de vous montrer l'image RVB ou BGR, mais la conversion HSV la chevauche.
En outre, le canal de valeur sera similaire à l'échelle de gris de l'image en raison de sa luminosité.
Explorer les composants individuels de l'image RVB
import cv2 image = cv2.imread ('input.jpg') # La fonction de division d'opencv divise l'image en chaque index de couleur B, G, R = cv2.split (image) cv2.imshow ("Red", R) cv2.imshow ("Green", G) cv2.imshow ("Blue", B) #making l'image originale en fusionnant les composants de couleur individuels merged = cv2.merge () cv2.imshow ("merged", merged) #amplifying the blue color merged = cv2.merge () cv2.imshow ("fusionné avec le bleu amplifier", fusionné) #représentant la forme des composants de couleur individuels. # la sortie n'aura que deux dimensions, soit la hauteur et la largeur, puisque le troisième élément du composant RVB est représenté individuellement print (B.shape) print (R.shape) impression (G.shape) cv2.waitKey (0) cv2.destroyAllWindows ()
Sortie de la console: #dimensions de l'image de la fonction de forme
(183, 275)
(183, 275)
(183, 275)
Conversion d'image en composant RVB individuel
Dans le code ci-dessous, nous avons créé une matrice de zéros avec les dimensions de l'image HxW, zéro renvoie un tableau rempli de zéros mais avec les mêmes dimensions.
La fonction de forme est très utile lorsque nous examinons la dimension d'une image, et ici nous avons effectué le découpage de cette fonction de forme. Ainsi, la forme attraperait tout jusqu'aux points désignés, c'est-à-dire jusqu'aux seconds points désignés qui seraient la hauteur et la largeur de l'image car le troisième représente la composante RVB de l'image et nous n'en avons pas besoin ici.
import cv2 import numpy as np image = cv2.imread ('input.jpg') B, G, R = cv2.split (image) zeros = np.zeros (image.shape, dtype = "uint8") cv2.imshow ("ROUGE", cv2.merge ()) cv2.imshow ("Vert", cv2.merge ()) cv2.imshow ("Bleu", cv2.merge ()) cv2.waitKey (0) cv2.destroyAllWindows ()
Représentation histogramme de l'image
La représentation histogramme de l'image est la méthode de visualisation des composants des images.
Le code suivant vous permet d'analyser l'image à travers l'histogramme des couleurs de ses composants de couleur combinés et individuels.
import cv2 import numpy as np #nous devons importer matplotlib pour créer des tracés d'histogramme import matplotlib.pyplot as plt image = cv2.imread ('input.jpg') histogram = cv2.calcHist (,, None,,) #we plot a histogramme, ravel () aplanit notre tableau d'images plt.hist (image.ravel (), 256,) plt.show () #viewing des canaux de couleurs séparés color = ('b', 'g', 'r') #we know séparez la couleur et tracez chacun dans l'histogramme pour i, col dans enumerate (couleur): histogram2 = cv2.calcHist (,, None,,) plt.plot (histogram2, color = col) plt.xlim () plt.show ()
Comprenons la calcHist fonction avec chacun de ses paramètres individuels
cv2.calcHist (images, canaux, masque, histsize , plages)
Images: c'est l'image source de type uint 8 ou float 32. Elle doit être indiquée entre crochets, c'est-à-dire «», qui indique également son tableau de deuxième niveau puisqu'une image pour opencv est une donnée sous forme de tableau.
Canaux: il est également indiqué entre crochets. C'est l'index du canal pour lequel nous calculons l'histogramme, par exemple si l'entrée est une image en niveaux de gris sa valeur est, pour les images couleur que vous pouvez passer, ou pour calculer l'histogramme du canal bleu, vert et rouge respectivement.
Masque: image de masque. pour trouver l'histogramme de l'image complète, il est donné comme «aucun». mais si vous voulez trouver l'histogramme d'une région particulière de l'image, vous devez créer une image de masque pour cela et la donner comme masque.
Histsize: Cela représente notre nombre BIN. Doit être indiqué entre crochets pour que nous passions à grande échelle.
Gammes: Ceci est notre gamme, est normalement
Dessiner des images et des formes à l'aide d'OpenCV
Vous trouverez ci-dessous quelques exemples pour dessiner des lignes, des rectangles, des polygones, des cercles, etc. dans OpenCV.
import cv2 import numpy as np #création d'une image carrée noire = np.zeros ((512,512,3), np.uint8) # nous pouvons également créer ceci en noir et blanc, cependant il n'y aurait aucun changement image_bw = np.zeros ((512,512), np.uint8) cv2.imshow ("rectangle noir (couleur)", image) cv2.imshow ("rectangle noir (N&B)", image_bw)
Ligne
# créer une ligne sur un carré noir # cv2.line (image, coordonnées de départ, coordonnées de fin, couleur, épaisseur) # dessin d'une ligne diagonale d'épaisseur 5 pixels image = np.zeros ((512,512,3), np.uint8) cv2.line (image, (0,0), (511,511), (255,127,0), 5) cv2.imshow ("ligne bleue", image)
Rectangle
#créer un rectangle sur un carré noir # cv2.rectangle (image, coordonnées de départ, coordonnées de fin, couleur, épaisseur) # dessin d'un rectangle d'épaisseur 5 pixels image = np.zeros ((512,512,3), np.uint8) cv2.rectangle (image, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("rectangle", image)
Cercle# création d'un cercle sur un carré noir # cv2.circle (image, centre, rayon, couleur, remplissage) image = np.zeros ((512,512,3), np.uint8) cv2.circle (image, (100,100), (50), (255,127,0), - 1) cv2.imshow ("cercle", image)
Polygone# créer une image polygonale = np.zeros ((512,512,3), np.uint8) #lets définissent quatre points pts = np.array (,,,], np.int32) #lets remodèlent maintenant nos points sous la forme requise par polylignes pts = pts.reshape ((- 1,1,2)) cv2.polylines (image,, True, (0.255.255), 3) cv2.imshow ("polygone", image)
Texte#putting text using opencv # cv2.putText (image, 'text to display', bootom left point de départ, police, taille de police, couleur, épaisseur) image = np.zeros ((512,512,3), np.uint8) cv2. putText (image, "bonjour le monde", (75290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("bonjour le monde", image) cv2.waitKey (0) cv2.destroyAllWindows ()
La vision par ordinateur et OpenCV sont des sujets très vastes à couvrir mais ce guide serait un bon point de départ pour apprendre OpenCV et le traitement d'image.