Créer une image OpenCV
-
Créer des images en utilisant la fonction
zeros()
deNumPy
dans OpenCV - Créer des images avec des fonctions de dessin dans 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:
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:
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:
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: