Zeichnen ein Rechteck mit dem OpenCV-Modul in Python
OpenCV ist eine Echtzeit-Computer-Vision-Bibliothek. Es ist für Programmiersprachen wie Python, Java und C++ verfügbar. Mit OpenCV können wir Formen zeichnen und Bilder effizient verarbeiten. In diesem Artikel erfahren Sie, wie Sie mit dem OpenCV-Modul Rechtecke zeichnen.
Rechtecke mit OpenCV zeichnen
Das OpenCV-Modul verfügt über eine Funktion rectangle()
, die zum Zeichnen von Rechtecken verwendet werden kann. Es gibt ein Bildobjekt zurück. Es akzeptiert die folgenden Argumente.
img
: Es ist das Bildobjekt, über dem das Rechteck erstellt werden soll.pt1
: Dies sind die Startkoordinaten des Rechtecks. Es akzeptiert ein Tupel mit einem x-Koordinatenwert und einem y-Koordinatenwert.pt2
: Dies sind die Endkoordinaten des Rechtecks. Es akzeptiert ein Tupel mit einem x-Koordinatenwert und einem y-Koordinatenwert.color
: Es ist ein Tupel, das die Farbe des Rechtecks repräsentiert. OpenCV berücksichtigt standardmäßig das BGR-Format. Daher müssen die Werte in BGR anstelle des allgemeinen RGB-Formats eingegeben werden. Zum Beispiel steht(255, 0, 0)
für Blau und(0, 0, 255)
für Rot.thickness
: Dies ist die Dicke des Randes des Rechtecks. Seine Einheiten sindpx
. Die Dicke-1
füllt das Rechteck mit der angegebenen Farbe. Bei anderen positiven Dickenwerten wird das Rechteck nicht mit der angegebenen Farbe gefüllt. Es gilt nur für die Grenze.
Sehen wir uns nun an, wie wir diese Funktion praktisch verwenden können, um Rechtecke zu zeichnen. Ein Beispiel finden Sie im folgenden Code.
import cv2
image_url = "full\\path\\to\\the\\image\\image.jpg" # Full path is needed
image = cv2.imread(image_url, cv2.COLOR_BGR2RGB)
start_point = (140, 140)
end_point = (500, 500)
color = (0, 0, 255)
thickness = 3
image_with_rectangle = cv2.rectangle(
img=image, pt1=start_point, pt2=end_point, color=color, thickness=thickness
)
cv2.imshow("Image with a Rectangle", image_with_rectangle)
cv2.waitKey(0)
Der obige Code lädt zuerst das Bild aus dem angegebenen Pfad, wandelt die BGR-Farbreihenfolge mit cv2.COLOR_BGR2RGB
in die RGB-Farbreihenfolge um und zeichnet dann ein Rechteck der Grösse 360 x 360
über das Bild. Beachten Sie, dass der Dickenwert positiv ist. Das bedeutet, dass das Rechteck keine Füllfarbe hat.
Außerdem haben wir diese Anweisung cv2.waitKey(0)
am Ende des Codes. Es verhindert, dass das Bild automatisch geschlossen wird, sobald das Programm ausgeführt wird. Wird das Programm ohne diese Anweisung ausgeführt, erscheint das geänderte Bild und wird dann sofort geschlossen.
Ausgabe:
Was ist, wenn wir den Wert der Dicke auf -1
ändern? In diesem Fall hat das Rechteck eine Füllfarbe. Siehe den folgenden Code für dasselbe.
import cv2
image_url = "full\\path\\to\\the\\image\\image.jpg" # Full path is needed
image = cv2.imread(image_url, cv2.COLOR_BGR2RGB)
start_point = (140, 140)
end_point = (500, 500)
color = (0, 255, 255)
thickness = -1
image_with_rectangle = cv2.rectangle(
img=image, pt1=start_point, pt2=end_point, color=color, thickness=thickness
)
cv2.imshow("Image with a Rectangle", image_with_rectangle)
cv2.waitKey(0)
Ausgabe: