CV2: Master Guide OpenCV für Python Entwickler

Python ist eine beliebte Programmiersprache, die über zahlreiche Bibliotheken und Module für unterschiedliche Anwendungen verfügt. Eine dieser Bibliotheken, die häufig für die Bild- und Videoverarbeitung verwendet wird, ist OpenCV. Das Modul cv2 ist das wichtigste Modul in OpenCV, das Entwicklern eine einfach zu bedienende Schnittstelle für die Arbeit mit Bild- und Videoverarbeitungsfunktionen bietet.

In diesem Artikel werden wir einige der am häufigsten verwendeten Funktionen in cv2 zeigen.

cv2 – Installation

Bevor wir uns mit den Funktionen beschäftigen, muss cv2 installiert werden. Es gibt zwei Hauptwege, cv2 zu installieren:

  1. pip install opencv-python
  2. conda install -c conda-forge opencv

Sobald cv2 installiert ist, können wir mit der Nutzung der verschiedenen Funktionen beginnen, die die Bibliothek bietet.

In der Vergangenheit schrieben wir bereits über Python Pakete wie z. B.

cv2.imread

cv2.imread ist eine Funktion zum Lesen eines Bildes aus einer Datei. Sie nimmt den Dateipfad als Eingabe und gibt ein Numpy-Array zurück, das das Bild enthält. Hier ist ein Beispiel:

import cv2
img = cv2.imread('image.jpg')

cv2.resize

cv2.resize is a function that is used to resize an image. It takes the input image and the new dimensions as inputs and returns the resized image. Here’s an example:

import cv2
img = cv2.imread('image.jpg')
resized_img = cv2.resize(img, (500, 500))

cv2.imshow

cv2.imshow ist eine Funktion, die zur Anzeige eines Bildes verwendet wird. Sie nimmt das Bild als Eingabe und öffnet ein neues Fenster, um das Bild anzuzeigen. Hier ist ein Beispiel:

import cv2
img = cv2.imread('image.jpg')
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.imwrite

cv2.imwrite ist eine Funktion, mit der ein Bild in einer Datei gespeichert werden kann. Sie nimmt das Bild und den Dateipfad als Eingabe und speichert das Bild im Dateipfad. Hier ist ein Beispiel:

import cv2
img = cv2.imread('image.jpg')
cv2.imwrite('new_image.jpg', img)

cv2.threshold

cv2.threshold ist eine Funktion, mit der ein Bild mit einem Schwellenwert versehen werden kann. Sie nimmt das Eingabebild und einen Schwellenwert als Eingabe und gibt das mit Schwellenwerten versehene Bild zurück. Hier ist ein Beispiel:

import cv2
img = cv2.imread('image.jpg', 0)
ret, thresh = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)

cv2.rectangle

cv2.rectangle ist eine Funktion, mit der ein Rechteck auf ein Bild gezeichnet werden kann. Sie nimmt das Eingabebild, die Koordinaten des Rechtecks, die Farbe und die Dicke als Eingaben und gibt das Bild mit dem gezeichneten Rechteck zurück. Hier ist ein Beispiel:

import cv2
img = cv2.imread('image.jpg')
cv2.rectangle(img, (100, 100), (200, 200), (0, 255, 0), 2)

cv2.findContours

cv2.findContours is a function that is used to find the contours in an image. It takes the input image, the contour retrieval mode, and the contour approximation method as inputs and returns the contours. Here’s an example:

import cv2
img = cv2.imread('image.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
contours

Laden und Anzeigen von Bildern

Sobald Sie CV2 installiert haben, können Sie mit Bildern arbeiten. Der erste Schritt besteht darin, ein Bild in Ihr Python-Programm zu laden. Dazu können Sie die Funktion cv2.imread() verwenden, die den Pfad zur Bilddatei als Eingabe annimmt und ein NumPy-Array zurückgibt, das das Bild darstellt.

import cv2
# Load an image
img = cv2.imread('image.jpg')
# Display the image
cv2.imshow('Image', img)
# Wait for a key press and then close the window
cv2.waitKey(0)
cv2.destroyAllWindows()

Im obigen Code laden wir zunächst ein Bild mit der Funktion cv2.imread() und speichern es in der Variablen img. Anschließend wird das Bild mit der Funktion cv2.imshow() angezeigt, die zwei Argumente benötigt: den Namen des Fensters und das Bild selbst. Schließlich warten wir mit der Funktion cv2.waitKey() auf einen Tastendruck und schließen dann das Fenster mit der Funktion cv2.destroyAllWindows().

Bildmanipulation

CV2 bietet viele Funktionen zur Bearbeitung von Bildern, z. B. Größenänderung, Drehen und Zuschneiden. Hier sind einige Beispiele:

# Resize an image
resized_img = cv2.resize(img, (500, 500))
# Rotate an image
(rows, cols) = img.shape[:2]
M = cv2.getRotationMatrix2D((cols/2, rows/2), 45, 1)
rotated_img = cv2.warpAffine(img, M, (cols, rows))
# Crop an image
cropped_img = img[100:300, 200:400]

Im obigen Code wird die Größe eines Bildes mit der Funktion cv2.resize() geändert, ein Bild mit den Funktionen cv2.getRotationMatrix2D() und cv2.warpAffine() gedreht und ein Bild mit der NumPy-Array-Indizierung zugeschnitten.

Bildfilterung

Das Filtern von Bildern ist eine wichtige Technik in der Bildverarbeitung, mit der sich bestimmte Merkmale eines Bildes verbessern oder extrahieren lassen. CV2 bietet mehrere Funktionen zum Filtern von Bildern, z. B. Weichzeichnen, Schärfen und Kantenerkennung. Hier sind einige Beispiele:

# Blur an image
blurred_img = cv2.blur(img, (5, 5))
# Sharpen an image
kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharpened_img = cv2.filter2D(img, -1, kernel)
# Detect edges in an image
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges_img = cv2.Canny(gray_img, 100, 200)

Im obigen Code wird ein Bild mit der Funktion cv2.blur() weichgezeichnet, mit der Funktion cv2.filter2D() und einem benutzerdefinierten Kernel geschärft und mit der Funktion cv2.cvtColor() zur Umwandlung des Bildes in Graustufen und der Funktion cv2.Canny() zur Erkennung von Kanten in einem Bild erkannt.

Fazit

CV2 ist eine leistungsfähige Bibliothek für die Arbeit mit Bildern in Python. In diesem Artikel haben wir einige der am häufigsten verwendeten Funktionen und Methoden in CV2 behandelt, darunter das Laden und Anzeigen von Bildern, die Bildmanipulation und das Filtern von Bildern. Mit diesen Werkzeugen, die Ihnen zur Verfügung stehen, können Sie die spannende Welt der Computer Vision und der Bildverarbeitung erkunden.

CV2 kann man unter PyPi herunterladen.

Für Entwickler sind unsere Beiträge für OCR API und Document AI ebenfalls sehr spannend.

«
»
Avatar von Florian Zyprian

Neueste Artikel