OpenCV Bild erstellen
-
Erstellen von Bildern mithilfe der Funktion
zeros()
vonNumPy
in OpenCV - Bilder mit Zeichenfunktionen in OpenCV erstellen
Eine der Aufgaben der Bildverarbeitung besteht darin, Bilder zu erstellen, entweder von Grund auf oder indem bereits vorhandene Bilder geladen und modifiziert werden. In diesem Tutorial werden die gängigen Methoden zur Erstellung eines Bildes in OpenCV besprochen.
Erstellen von Bildern mithilfe der Funktion zeros()
von NumPy
in OpenCV
Ein Bild besteht aus Pixeln, die in einer Matrix angeordnet sind. Jeder Pixel enthält einen Farbwert als BGR-Triplette.
Ein BGR-Triplette-Wert enthält drei Werte, die in einem 8-Bit-Bild im Bereich von 0 bis 255
liegen. Der erste Wert entspricht der Intensität der blauen Farbe und die zweiten und dritten BRG-Triplette-Werte der grünen und roten Farben.
Wir können den Wert dieser drei Farben festlegen, um jede beliebige Farbe zu erzeugen.
In einem 8-Bit-Bild kann ein einzelner Pixel 256
mal 256
mal 255
verschiedene Farben haben. Mit der Funktion zeros()
von NumPy
können wir ein schwarzes Bild erstellen.
Die Funktion zeros()
erstellt eine Matrix, die nur Nullen enthält, basierend auf der Anzahl der Zeilen und Spalten der Matrix.
Beispielcode 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)
Ausgabe:
Jeder Pixel im obigen Bild hat den BGR-Triplette-Wert von (0,0,0)
, was schwarz ist. Wir können auch die Farbe des Bildes ändern, indem wir jedem Pixel einen BGR-Triplette-Wert zuweisen.
Nun ändern wir die Farbe des obigen Bildes in blau.
Beispielcode 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)
Ausgabe:
Das Doppelpunkt-Symbol (:)
im obigen Code wird für alle Zeilen und Spalten verwendet. Der erste Doppelpunkt bezieht sich auf die Spalte und der zweite Doppelpunkt auf die Zeilen in der Matrix img
.
Der Doppelpunkt definiert auch Bereiche wie 0 bis 100
als 0:100
. Anstatt die Farbe aller Pixel festzulegen, können wir die Farbe einiger Pixel im Bild festlegen.
Zum Beispiel setzen wir unterschiedliche Farben für verschiedene Teile des obigen Bildes.
Beispielcode 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)
Ausgabe:
Im obigen Code setzen wir die Farbe der ersten 100
Spalten und ersten 100
Zeilen auf die Farbe Cyan und die Farbe der rechten Seite des Bildes auf die Farbe Rot unter Verwendung der Bildbreite.
Bilder mit Zeichenfunktionen in OpenCV erstellen
OpenCV bietet eine Reihe von Zeichenfunktionen, mit denen Sie grafische Elemente zu Bildern hinzufügen können. Mit den folgenden Funktionen können Sie Bilder mit Formen, Linien und Text erstellen.
-
cv2.line()
: Zeichnet eine gerade Linie zwischen zwei Punkten. -
cv2.rectangle()
: Zeichnet ein Rechteck mit angegebenen Abmessungen. -
cv2.circle()
: Zeichnet einen Kreis mit einem gegebenen Mittelpunkt und Radius. -
cv2.ellipse()
: Zeichnet eine Ellipse mit angegebenen Parametern. -
cv2.polylines()
: Zeichnet ein Polygon oder eine Reihe von verbundenen Linien. -
cv2.putText()
: Fügt einem Bild Text hinzu.
Beispielcode:
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()
Ausgabe: