[Réimprimé] Introduction au traitement d'image de la série OpenCV-Python (5)

Nous avons déjà parlé de la façon d'installer OpenCV sur différentes plates-formes et à partir d'aujourd'hui, nous entrerons officiellement dans la partie combat proprement dite. La première chose que nous devons faire est de savoir comment lire l'image et l'afficher, ce qui est la partie la plus élémentaire du traitement d'image.

Tout d'abord, comprenons quelques fonctions :

cv2.imread ():

Regardons le prototype de la fonction:

retval = cv.imread (nom de fichier [, indicateurs])

retval est un nom personnalisé, le nom de fichier fait référence au nom du fichier qui doit être chargé. Généralement, la plupart du temps, nous chargeons le fichier directement, donc la plupart du temps, nous pouvons lire directement l'image, mais dans certains cas, nous voulons directement L'image d'origine est convertie en une image en niveaux de gris pour faciliter les traitements morphologiques ultérieurs. Ensuite, la signification du deuxième paramètre est affichée à ce moment. Le deuxième paramètre appartient à une marque, qui sert à spécifier la manière de lire l'image. Il existe trois façons:

cv.IMREAD_COLOR : charge une image couleur. Toute transparence de l'image sera ignorée. C'est le drapeau par défaut.

cv.IMREAD_GRAYSCALE : charge l'image en mode niveaux de gris

cv.IMREAD_UNCHANGED : charger l'image, y compris le canal alpha

Bien entendu, pour des raisons de commodité, ils peuvent également être représentés respectivement par 1, 0 et -1. 1 fait référence à l'image d'origine, qui est la première fonction; 0 fait référence à la deuxième fonction à convertir en niveaux de gris; -1 fait référence à la troisième fonction.

cv2.imshow ():

Cette fonction permet d'afficher l'image dans la fenêtre, et la fenêtre s'adapte automatiquement à la taille actuelle de l'image d'entrée. Cette fonction est complémentaire de la fonction imread. Le prototype de la fonction est:

Aucun = cv.imshow (winname, mat)

Aucun signifie que vous n'avez pas besoin de remplir, ne vous en souciez pas, nous pouvons directement utiliser imshow, winname fait référence au nom de l'image que vous produisez, peut être personnalisé, mais n'utilisez pas le nom chinois, sinon il sera déformé; mat est l'image que vous devez afficher.

Cette fonction doit être suivie de la fonction ** cv2.waitKey () **, qui affiche l'image dans les millisecondes spécifiées. Si la fonction waitkey n'est pas utilisée, elle n'affichera pas l'image. Par exemple, waitKey (0) affichera la fenêtre indéfiniment jusqu'à ce qu'une touche soit enfoncée (convient pour l'affichage d'image). waitKey (25) affichera les images pendant 25 millisecondes, après quoi l'affichage s'éteindra automatiquement.

Une autre fonction ** cv2.destroyAllWindows () ** détruira toutes les fenêtres que nous avons créées. Si vous souhaitez détruire une fenêtre spécifique, utilisez la fonction cv.destroyWindow () pour passer le nom exact de la fenêtre en paramètre.

Faisons une expérience maintenant, montrons d'abord les images les plus basiques (les deux dans l'image de code):

Insérez la description de l'image ici

Maintenant, nous changeons l'image lue en niveaux de gris, le dernier paramètre de la fonction mread peut effectuer des opérations connexes, lorsqu'il est à 0:

Insérez la description de l'image ici

Quand il est 1:
Insérez la description de l'image ici

Si c'est -1:
Insérez la description de l'image ici

Maintenant, la taille de la fenêtre de l'image de sortie est fixe, donc si nous voulons ajuster la taille de la fenêtre, nous devons utiliser une autre fonction. Dans des cas particuliers, nous pouvons créer une fenêtre vide puis charger l'image dans la fenêtre. Dans ce cas, vous pouvez spécifier si la fenêtre est redimensionnable. Cela se fait via la fonction cv.namedWindow (), testons maintenant:
Insérez la description de l'image ici

Lorsque nous ajoutons un 0 après la fonction, nous pouvons utiliser la souris pour ajuster manuellement la taille de l'image de sortie, ce qui est très pratique. En fait, le paramètre correspondant à 0 est cv2.WINDOW_NORMAL, qui permet d'ajuster automatiquement l'image. Apprenons à comprendre de manière générale les paramètres pertinents:

WINDOW_NORMAL ou WINDOW_AUTOSIZE: WINDOW_NORMAL peut ajuster la taille de la fenêtre, tandis que WINDOW_AUTOSIZE ajustera automatiquement la taille de la fenêtre pour s'adapter à l'image affichée (voir imshow), et vous ne pouvez pas modifier manuellement la taille de la fenêtre.

WINDOW_FREERATIO ou WINDOW_KEEPRATIO: WINDOW_FREERATIO ne tient pas compte de son rapport lors du réglage de l'image, tandis que WINDOW_KEEPRATIO conserve le rapport de l'image.

WINDOW_GUI_NORMAL ou WINDOW_GUI_EXPANDED: WINDOW_GUI_NORMAL est l'ancienne méthode de dessin de fenêtres sans barre d'état et barre d'outils, et WINDOW_GUI_EXPANDED est la nouvelle interface graphique améliorée. Indicateur par défaut == WINDOW_AUTOSIZE | WINDOW_KEEPRATIO | WINDOW_GUI_EXPANDED

Si nous voulons enregistrer l'image traitée et l'enregistrer dans un dossier, nous devons utiliser la fonction cv2.imwrite.

cv2.imwrite ():

La fonction imwrite enregistre l'image dans le fichier spécifié. Le format d'image est sélectionné en fonction de l'extension du fichier (voir cv :: imread pour la liste des extensions). En règle générale, seules les images 8 bits monocanal ou 3 canaux (avec séquence de canaux "BGR") peuvent être enregistrées à l'aide de cette fonction, sauf dans les cas suivants:

Pour les formats PNG, JPEG 2000 et TIFF, les images 16 bits non signées (CV_16U) peuvent être enregistrées

Les images 32 bits à virgule flottante (CV_32F) peuvent être enregistrées aux formats PFM, TIFF, OpenEXR et Radiance HDR; l'utilisation du codage à plage dynamique élevée LogLuv (4 octets par pixel) enregistre les images TIFF à 3 canaux (CV_32FC3)

Utilisez cette fonction pour enregistrer des images PNG avec un canal Alpha. Pour cela, une image BGRA à 4 canaux 8 bits (ou 16 bits) est créée, avec le canal alpha à la fin. Les pixels entièrement transparents doivent avoir une valeur alpha définie sur 0 et les pixels complètement opaques doivent avoir une valeur alpha définie sur 255/65535

Le prototype de fonction est:

retval = cv.imwrite (nom de fichier, img [, paramètres])

Le premier paramètre est le nom du fichier et le deuxième paramètre est l'image à enregistrer. Maintenant, nous écrivons un code complet:

	view plaincopy to clipboardprint?
 1. import numpy as np   
 2. import cv2 as cv      
 3. img =cv.imread('cat.jpg', 0)   
 4. cv.imshow('image', img)   
 5. k =cv.waitKey(0) & 0xff   
 6. if k == 27:  # wait for ESC key to exit  
 7.      cv.destroyAllWindows()   
 8. elif k == ord('s'):  # wait for 's' key to save and exit  
 9.     cv.imwrite('cat.png', img)  
 10.    cv.destroyAllWindows()

Dans le programme ci-dessus, chargez l'image en niveaux de gris, affichez l'image, appuyez sur la touche "s" du clavier pour enregistrer l'image et quitter, ou appuyez sur la touche ESC pour quitter sans enregistrer. Nous appuyons sur l'expérience: l'
Insérez la description de l'image ici
image est enregistrée.

Ensuite, la partie introductive du traitement d'image est officiellement terminée, c'est aussi le fondement des bases, et le suivi sera très utile.
Consultez la page de résumé de l'article https://blog.csdn.net/weixin_44237705/article/details/107864965
Plus d'informations techniques openvino peuvent être échangées dans le groupe ~
Insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/weixin_44237705/article/details/107933299
conseillé
Classement