Grundlegende Operationen auf Bildern

OpenCVBeginner
Jetzt üben

Einführung

Willkommen zu diesem Tutorial zu OpenCV-Python! In diesem Tutorial werden einige grundlegende Operationen auf Bilder mit der OpenCV-Bibliothek in Python behandelt.

Zugriff auf und Modifizierung von Pixelwerten

Bevor Sie dieses Lab starten, müssen die Teilnehmer die Python-Shell im Terminal in /home/labex/project öffnen

cd /home/labex/project

python3

Zunächst laden wir ein Bild und zeigen es mit OpenCV an:

import cv2

## Lade ein Bild
image = cv2.imread('image.jpg')

## Zeige das Bild an
cv2.imwrite('Original Image.jpg', image)

Um einen Pixelwert zuzugreifen, müssen wir einfach seine Koordinaten (x, y) angeben, wie folgt:

pixel_value = image[y, x]

Der Pixelwert ist ein Array, das die Farbkanäle (B, G, R) enthält. Um einen Pixelwert zu ändern, weisen Sie einfach einen neuen Wert an die entsprechenden Koordinaten zu.

Hier ist ein Beispiel, um den Pixel [0:9, 0:9] auf rot zu setzen:

for x in range(10):
    for y in range(10):
        image[x, y] = [0, 0, 255]  ## Setze den Pixel auf rot


cv2.imwrite('Modified Image.jpg', image)

Das ursprüngliche Bild sieht wie folgt aus:

Originalbild vor der Änderung

Bild nach Änderung der Pixelwerte im Bereich [0:9,0:9]:

Bild mit geänderten Pixelwerten

Die Benutzer können die Richtigkeit des Ergebnisses überprüfen, indem sie den folgenden Code ausführen.

Zugriff auf Bild-Eigenschaften

Bild-Eigenschaften umfassen die Anzahl der Zeilen, Spalten und Kanäle, sowie den Datentyp des Bilds und die Gesamtzahl der Pixel.

Um die Form des Bilds (Zeilen, Spalten und Kanäle) zuzugreifen, verwenden Sie das Attribut shape:

height, width, channels = image.shape
print(height, width, channels)

## Ausgabe
## 360 640 3

Um die Gesamtzahl der Pixel zuzugreifen, verwenden Sie das Attribut size:

total_pixels = image.size
print(total_pixels)

## Ausgabe
## 691200

Um den Datentyp des Bilds zuzugreifen, verwenden Sie das Attribut dtype:

image_dtype = image.dtype
print(image_dtype)

## Ausgabe
## uint8

Festlegen eines Bereichs von Interesse (ROI)

Ein Bereich von Interesse (ROI) ist ein Teilbild, das wir aus dem ursprünglichen Bild extrahieren können. Um einen ROI einzurichten, müssen wir einfach die Start- und Endkoordinaten angeben.

roi = image[start_y:end_y, start_x:end_x]

Beispielsweise können wir, um einen ROI von 100x100 Pixeln aus der oberen linken Ecke zu extrahieren, Folgendes tun:

roi = image[0:100, 0:100]
cv2.imwrite('ROI.jpg', roi)

Das generierte Bild ROI.jpg sieht wie folgt aus:

ROI-Beispielbild

Zerteilen und Zusammenführen von Bildern

Um ein Bild in seine Farbkanäle (B, G, R) aufzuteilen, verwenden Sie die Funktion cv2.split():

b, g, r = cv2.split(image)

Wir können nun die einzelnen Kanäle mit cv2.imwrite() anzeigen. Um die Kanäle wieder zu einem einzelnen Bild zusammenzuführen, verwenden Sie die Funktion cv2.merge():

merged_image = cv2.merge((b, g, r))

Beispielsweise können wir die Rot- und Blaukanäle tauschen, indem wir Folgendes tun:

swapped_image = cv2.merge((r, g, b))
cv2.imwrite('Swapped Channels Image.jpg', swapped_image)

Das generierte Bild Swapped Channels Image.jpg sieht wie folgt aus:

Getauschte Rot- und Blaukanäle

Zusammenfassung

Und das war's! Sie haben einige grundlegende Operationen mit Bildern mithilfe von OpenCV-Python gelernt. Dies sind wichtige Konzepte, die Sie verstehen sollten, wenn Sie mit Bildern in Anwendungen der computergestützten Vision und der Bildverarbeitung arbeiten. Indem Sie diese grundlegenden Operationen beherrschen, sind Sie gut auf dem Weg, um fortgeschrittene Bildverarbeitungsalgorithmen zu entwickeln.