Créer une image OpenCV

Ammar Ali 15 février 2024
  1. Créer des images en utilisant la fonction zeros() de NumPy dans OpenCV
  2. Créer des images avec des fonctions de dessin dans OpenCV
Créer une image OpenCV

Une des tâches du traitement d’image est de créer des images, soit à partir de zéro soit en chargeant des images existantes et en les modifiant. Ce tutoriel traitera des méthodes courantes pour créer une image dans OpenCV.

Créer des images en utilisant la fonction zeros() de NumPy dans OpenCV

Une image est composée de pixels placés dans une matrice. Chaque pixel contient une valeur de couleur sous la forme d’un triplet BGR.

Une valeur de triplet BGR contient trois valeurs qui vont de 0 à 255 dans une image 8 bits. La première valeur correspond à l’intensité de la couleur bleue, et les deuxième et troisième triplet BGR correspondent aux couleurs verte et rouge.

Nous pouvons définir la valeur de ces trois couleurs pour obtenir n’importe quelle couleur.

Dans une image 8 bits, un seul pixel peut avoir 256 multiplié par 256 multiplié par 255 couleurs différentes. Nous pouvons utiliser la fonction zeros() de NumPy pour créer une image noire.

La fonction zeros() crée une matrice ne contenant que des zéros en donnant le nombre de lignes et de colonnes de la matrice.

Code d’exemple 1:

import cv2
import numpy as np

# Define the dimensions of the image
height = 512
width = 512

# Create a black image with the specified dimensions
img = np.zeros((height, width, 3), np.uint8)

# Display the image
cv2.imshow("Binary", img)

# Wait until a key is pressed and then close the image window
cv2.waitKey(0)

Résultat:

image noire utilisant numpy

Chaque pixel de l’image ci-dessus aura la valeur de triplet BGR de (0,0,0), qui correspond au noir. Nous pouvons également changer la couleur de l’image en définissant la valeur de chaque pixel comme une valeur de triplet BGR.

Maintenant, changeons la couleur de l’image ci-dessus en bleu.

Code d’exemple 2:

import cv2
import numpy as np

# Define the dimensions of the image
height = 512
width = 512

# Create a black image with the specified dimensions
img = np.zeros((height, width, 3), np.uint8)

# Fill the entire image with a blue color
img[:, :] = (255, 0, 0)

# Display the image
cv2.imshow("image", img)

# Wait until a key is pressed and then close the image window
cv2.waitKey(0)

Résultat:

image bleue utilisant numpy

Le symbole deux-points (:) dans le code ci-dessus est utilisé pour toutes les lignes et colonnes. Le premier deux-points correspond aux colonnes, et le deuxième deux-points correspond aux lignes dans la matrice img.

Le deux-points permet également de définir des plages comme 0 à 100 comme 0:100. Au lieu de définir la couleur de tous les pixels, nous pouvons définir la couleur de certains pixels dans l’image.

Par exemple, définissons des couleurs différentes pour différentes parties de l’image ci-dessus.

Code d’exemple 3:

import cv2
import numpy as np

# Define the dimensions of the image
height = 512
width = 512

# Create a black image with the specified dimensions
img = np.zeros((height, width, 3), np.uint8)

# Fill the entire image with blue color (BGR format)
img[:, :] = (255, 0, 0)

# Fill a region in the top-left corner with yellow color
img[0:100, 0:100] = (255, 255, 0)

# Fill the right half of the image with red color
img[:, width // 2 : width] = (0, 0, 255)

# Display the resulting image
cv2.imshow("image", img)

# Wait for a key press and close the image window
cv2.waitKey(0)

Résultat:

image multicolore utilisant numpy

Dans le code ci-dessus, nous définissons la couleur des premières 100 colonnes et des premières 100 lignes en couleur cyan, et la couleur du côté droit de l’image en couleur rouge en utilisant la largeur de l’image.

Créer des images avec des fonctions de dessin dans OpenCV

OpenCV propose toute une gamme de fonctions de dessin qui vous permettent d’ajouter des éléments graphiques aux images. En utilisant les fonctions suivantes, vous pouvez créer des images avec des formes, des lignes et du texte.

  • cv2.line(): Trace une ligne droite entre deux points.

  • cv2.rectangle(): Dessine un rectangle avec des dimensions spécifiées.

  • cv2.circle(): Dessine un cercle avec un centre et un rayon donnés.

  • cv2.ellipse(): Dessine une ellipse avec des paramètres spécifiés.

  • cv2.polylines(): Dessine un polygone ou une série de lignes connectées.

  • cv2.putText(): Ajoute du texte à une image.

Code d’exemple:

import cv2
import numpy as np

# Create a blank image with a white background
width, height = 640, 480
blank_image = np.zeros((height, width, 3), dtype=np.uint8)
blank_image[:] = (255, 255, 255)  # White color in BGR format

# Draw a red rectangle
start_point_rect = (100, 100)
end_point_rect = (300, 300)
red_color = (0, 0, 255)  # Red color in BGR format
thickness_rect = 2
cv2.rectangle(blank_image, start_point_rect, end_point_rect, red_color, thickness_rect)

# Draw a green circle
center_circle = (400, 150)
radius_circle = 50
green_color = (0, 255, 0)  # Green color in BGR format
thickness_circle = -1  # Negative thickness fills the circle
cv2.circle(blank_image, center_circle, radius_circle, green_color, thickness_circle)

# Draw a blue line
start_point_line = (50, 400)
end_point_line = (600, 400)
blue_color = (255, 0, 0)  # Blue color in BGR format
thickness_line = 5
cv2.line(blank_image, start_point_line, end_point_line, blue_color, thickness_line)

# Add text to the image
text = "OpenCV Drawing"
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 1
font_color = (0, 0, 0)  # Black color in BGR format
font_thickness = 2
text_position = (50, 50)
cv2.putText(
    blank_image, text, text_position, font, font_scale, font_color, font_thickness
)

# Display the image
cv2.imshow("Image with Drawing", blank_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Résultat:

créer des images vierges avec des fonctions de dessin dans opencv

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - OpenCV Image