OpenCV Arithmetische Bildoperationen
In der Bildverarbeitung sind arithmetische Operationen und bitweise Operationen sehr grundlegende und wichtige Operationen.
Dieser Artikel beschreibt detailliert, wie man OpenCV für Bildaddition, -subtraktion, -multiplikation, -division, bitweise Operationen und Bildüberblendung verwendet.
1. Grundlegende Operationen
Bildaddition
Bildaddition ist der Prozess des Addierens der entsprechenden Pixelwerte zweier Bilder, um ein neues Bild zu erzeugen.
In OpenCV können Sie diecv2.add()Funktion zur Implementierung der Bildaddition.
Beispiel
import numpy as np
# Zwei Bilder einlesen
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')
# Bildaddition
result = cv2.add(img1, img2)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Hinweis: Wenn der Pixelwert nach der Addition 255 überschreitet, schneidet OpenCV ihn automatisch auf 255 ab.
Bildsubtraktion
Bildsubtraktion ist der Prozess, bei dem die entsprechenden Pixelwerte zweier Bilder subtrahiert werden, um ein neues Bild zu erzeugen.
In OpenCV können Sie diecv2.subtract()Funktion zur Implementierung der Bildsubtraktion.
Beispiel
result = cv2.subtract(img1, img2)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Hinweis: Wenn der Pixelwert nach der Subtraktion kleiner als 0 ist, schneidet OpenCV ihn automatisch auf 0 ab.
Bildmultiplikation
Die Bildmultiplikation ist der Prozess, bei dem die entsprechenden Pixelwerte zweier Bilder multipliziert werden, um ein neues Bild zu erzeugen.
In OpenCV können Sie diecv2.multiply()Funktion zur Implementierung der Bildmultiplikation.
Beispiel
result = cv2.multiply(img1, img2)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Hinweis: Wenn der Pixelwert nach der Multiplikation 255 überschreitet, schneidet OpenCV ihn automatisch auf 255 ab.
Bilddivision
Die Bilddivision ist der Prozess, bei dem die entsprechenden Pixelwerte zweier Bilder dividiert werden, um ein neues Bild zu erzeugen. In OpenCV kannst du diecv2.divide()Funktion zur Implementierung der Bilddivision.
Beispiel
result = cv2.divide(img1, img2)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Hinweis: Wenn der Divisor 0 ist, setzt OpenCV das Ergebnis automatisch auf 0.
2. Bitweise Bildoperationen (AND, OR, NOT, XOR)
Bitweise Operationen führen binäre Bitoperationen an jedem Pixel des Bildes durch.
OpenCV bietetcv2.bitwise_and()、cv2.bitwise_or()、cv2.bitwise_not()undcv2.bitwise_xor()Funktionen zur Implementierung bitweiser Operationen auf Bildern.
| Funktion | Funktionalität | Anwendungsszenarien |
|---|---|---|
cv2.bitwise_and() | Bitweise AND-Operation | Maskierung, Bildsegmentierung |
cv2.bitwise_or() | Bitweise OR-Operation | Bildüberlagerung |
cv2.bitwise_not() | Bitweise NOT-Operation | Bildinvertierung |
cv2.bitwise_xor() | Bitweise XOR-Operation | Bilddifferenzerkennung |
Bitweise AND-Operation (AND)
Die bitweise AND-Operation wendet eine bitweise AND-Verknüpfung auf jedes Pixel zweier Bilder an.
Beispiel
result = cv2.bitwise_and(img1, img2)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Bitweise OR-Operation (OR)
Die bitweise OR-Operation wendet eine bitweise OR-Verknüpfung auf jedes Pixel zweier Bilder an.
Beispiel
result = cv2.bitwise_or(img1, img2)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Bitweise NOT-Operation (NOT)
Die bitweise NOT-Operation wendet eine bitweise Inversion auf jedes Pixel eines Bildes an.
Beispiel
result = cv2.bitwise_not(img1)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Bitweise XOR-Operation (XOR)
Die bitweise XOR-Operation führt bei jedem Pixel zweier Bilder ein bitweises XOR durch.
Beispiel
result = cv2.bitwise_xor(img1, img2)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. Bildüberblendung (cv2.addWeighted())
Bildüberblendung ist der Prozess, zwei Bilder gemäß bestimmten Gewichten linear zu kombinieren, um ein neues Bild zu erzeugen.
In OpenCV können Sie diecv2.addWeighted()Funktion zur Implementierung der Bildüberblendung.
Beispiel
alpha = 0.7 # Gewicht des ersten Bildes
beta = 0.3 # Gewicht des zweiten Bildes
gamma = 0 # Optionaler Skalarwert
result = cv2.addWeighted(img1, alpha, img2, beta, gamma)
# Ergebnis anzeigen
cv2.imshow('Result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
Parameterbeschreibung:
alpha: Gewichtung des ersten Bildes.beta: Gewichtung des zweiten Bildes.gamma: Optionaler Skalarwert, normalerweise auf 0 gesetzt.
Formel:
result = img1 * alpha + img2 * beta + gamma
Zusammenfassung
Dieser Artikel beschrieb ausführlich die arithmetischen Bildoperationen, bitweisen Operationen und die Bildüberblendung in OpenCV. Diese Operationen sind die Grundlage der Bildverarbeitung, und ihre Beherrschung ist entscheidend für nachfolgende, komplexere Bildverarbeitungsaufgaben. Durch Üben dieser Operationen können Sie die Grundprinzipien der Bildverarbeitung besser verstehen und ein solides Fundament für zukünftige Computer-Vision-Aufgaben legen.
Weitere Erweiterungen