Arithmetische 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 über arithmetische Operationen auf Bildern mit OpenCV-Python! In diesem Tutorial werden wir Addition, Subtraktion und bitweise Operationen behandeln. Am Ende dieses Tutorials werden Sie eine solide Vorstellung davon haben, wie man Bilder mit diesen grundlegenden Operationen manipulieren kann.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL opencv(("OpenCV")) -.-> opencv/BasicOperationsGroup(["Basic Operations"]) opencv/BasicOperationsGroup -.-> opencv/add("Image Addition") opencv/BasicOperationsGroup -.-> opencv/add_weighted("Image Blending") opencv/BasicOperationsGroup -.-> opencv/bitwise_and("Bitwise AND") opencv/BasicOperationsGroup -.-> opencv/bitwise_not("Bitwise NOT") opencv/BasicOperationsGroup -.-> opencv/bitwise_or("Bitwise OR") opencv/BasicOperationsGroup -.-> opencv/bitwise_xor("Bitwise XOR") opencv/BasicOperationsGroup -.-> opencv/imread("Image Read") opencv/BasicOperationsGroup -.-> opencv/imwrite("Image Write") opencv/BasicOperationsGroup -.-> opencv/subtract("Image Subtraction") subgraph Lab Skills opencv/add -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} opencv/add_weighted -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} opencv/bitwise_and -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} opencv/bitwise_not -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} opencv/bitwise_or -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} opencv/bitwise_xor -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} opencv/imread -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} opencv/imwrite -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} opencv/subtract -.-> lab-38502{{"Arithmetische Operationen auf Bildern"}} end

Bildaddition

Die Bildaddition ist der Prozess, bei dem Pixelwerte von zwei Bildern addiert werden. In OpenCV wird die Funktion cv2.add() zu diesem Zweck verwendet.

Öffnen der Python-Shell

Öffnen Sie die Python-Shell im Terminal

python3

Laden von zwei Bildern

Verwenden Sie .imread, um die Zielbilder zu lesen.

import cv2 as cv2
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

Addieren der Bilder

Verwenden Sie .add(), um die zwei Bilder zu aggregieren, die im vorherigen Schritt gelesen wurden.

result = cv2.add(img1, img2)

Speichern des Ergebnisses

Schreiben Sie das Ergebnis aus.

cv2.imwrite('Image_Addition.jpg', result)

Beispiel

Das generierte Bild Image_Addition.jpg sieht wie folgt aus:

Beispiel für das Ergebnis der Bildaddition

Bildvermischen

Dies ist ebenfalls eine Bildaddition, jedoch werden unterschiedlichen Gewichten zu den Bildern zugewiesen, um ein Gefühl des Vermischendseins oder der Transparenz zu erzeugen. Die Bilder werden gemäß der folgenden Gleichung hinzugefügt:

Diagramm der Bildvermischungsgleichung

cv.addWeighted() wendet diese Gleichung auf das Bild an.

Hinzufügen der Bilder

Verwenden Sie .addWeighted(), um die Gleichung auf die Bilder anzuwenden, die im vorherigen Schritt gelesen wurden.

result = cv2.addWeighted(img1,0.7,img2,0.3,0)

Speichern des Ergebnisses

Schreiben Sie das Ergebnis aus.

cv2.imwrite('Image_Blending.jpg', result)

Beispiel

Das generierte Bild Image_Blending.jpg sieht wie folgt aus:

Ergebnis des vermischten Bildes

Bildsubtraktion

Die Bildsubtraktion wird verwendet, um den Unterschied zwischen zwei Bildern zu finden. Sie subtrahiert die Pixelwerte eines Bildes von einem anderen. In OpenCV können Sie die Funktion cv2.subtract() verwenden.

Subtrahieren der Bilder

Verwenden Sie .subtract(), um die Pixelwerte von img1 von img2 zu subtrahieren.

result = cv2.subtract(img1, img2)

Speichern des Ergebnisses

Schreiben Sie das Ergebnis aus.

cv2.imwrite('Image_Subtraction.jpg', result)

Beispiel

Das generierte Bild Image_Subtraction.jpg sieht wie folgt aus:

Beispiel für das Ergebnis der Bildsubtraktion

Bitweise Operationen

Bitweise Operationen werden verwendet, um die einzelnen Bits der Pixelwerte zu manipulieren. OpenCV bietet Funktionen wie cv2.bitwise_and(), cv2.bitwise_or(), cv2.bitwise_xor() und cv2.bitwise_not() zum Durchführen von bitweisen Operationen.

Schauen wir uns ein Beispiel für jede Operation an:

Bitweiser UND

Verwenden Sie .bitwise_and(), um den bitweisen UND der Bits der Pixelwerte in zwei Bildern zu berechnen.

bitwise_and = cv2.bitwise_and(img1, img2)

Bitweiser ODER

Verwenden Sie .bitwise_or(), um den bitweisen ODER der Bits der Pixelwerte in zwei Bildern zu berechnen.

bitwise_or = cv2.bitwise_or(img1, img2)

Bitweiser XOR

Verwenden Sie .bitwise_xor(), um den bitweisen XOR der Bits der Pixelwerte in zwei Bildern zu berechnen.

bitwise_xor = cv2.bitwise_xor(img1, img2)

Bitweiser NICHT

Verwenden Sie .bitwise_not(), um den bitweisen NICHT der Bits der Pixelwerte in zwei Bildern zu berechnen.

bitwise_not_img1 = cv2.bitwise_not(img1)

Speichern der Ergebnisse

Schreiben Sie die Ergebnisse aus.

cv2.imwrite('Bitwise_AND.jpg', bitwise_and)
cv2.imwrite('Bitwise_OR.jpg', bitwise_or)
cv2.imwrite('Bitwise_XOR.jpg', bitwise_xor)
cv2.imwrite('Bitwise_NOT_Image1.jpg', bitwise_not_img1)

Beispiel

Das generierte Bild sieht wie folgt aus:

  • UND Bitwise_AND.jpg:
Ergebnis der bitweisen UND-Operation
  • ODER Bitwise_OR.jpg:
Ergebnis der bitweisen ODER-Operation
  • XOR Bitwise_XOR.jpg:
Ergebnis der bitweisen XOR-Operation
  • NICHT Bitwise_NOT_Image1.jpg:
Ergebnis der bitweisen NICHT-Operation

Zusammenfassung

Herzlichen Glückwunsch! Sie haben jetzt gelernt, wie Sie mit OpenCV-Python arithmetische Operationen auf Bildern durchführen. Sie haben Bildaddition, -subtraktion und bitweise Operationen behandelt. Diese grundlegenden Operationen können sehr nützlich für Bildverarbeitungsaufgaben sein, wie das Vermischen von Bildern, das Erkennen von Änderungen und das Maskieren von bestimmten Bereichen eines Bildes.

Üben Sie weiterhin und experimentieren Sie mit verschiedenen Bildern, um ein besseres Verständnis davon zu erhalten, wie diese Operationen funktionieren. Viel Glück und viel Spaß beim Programmieren!