Grundlegende Operationen auf Bildern

OpenCVOpenCVBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

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.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL opencv(("OpenCV")) -.-> opencv/BasicOperationsGroup(["Basic Operations"]) opencv/BasicOperationsGroup -.-> opencv/dtype("Dtype Property") opencv/BasicOperationsGroup -.-> opencv/imread("Image Read") opencv/BasicOperationsGroup -.-> opencv/imshow("Image Show") opencv/BasicOperationsGroup -.-> opencv/imwrite("Image Write") opencv/BasicOperationsGroup -.-> opencv/merge("Image Merge") opencv/BasicOperationsGroup -.-> opencv/shape("Shape Property") opencv/BasicOperationsGroup -.-> opencv/size("Size Property") opencv/BasicOperationsGroup -.-> opencv/split("Image Split") subgraph Lab Skills opencv/dtype -.-> lab-67174{{"Grundlegende Operationen auf Bildern"}} opencv/imread -.-> lab-67174{{"Grundlegende Operationen auf Bildern"}} opencv/imshow -.-> lab-67174{{"Grundlegende Operationen auf Bildern"}} opencv/imwrite -.-> lab-67174{{"Grundlegende Operationen auf Bildern"}} opencv/merge -.-> lab-67174{{"Grundlegende Operationen auf Bildern"}} opencv/shape -.-> lab-67174{{"Grundlegende Operationen auf Bildern"}} opencv/size -.-> lab-67174{{"Grundlegende Operationen auf Bildern"}} opencv/split -.-> lab-67174{{"Grundlegende Operationen auf Bildern"}} end

Zugriff auf und Änderung 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

Einrichten 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

Aufteilen 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.