Verwenden Sie Bitwise_AND auf einem Bild mit OpenCV

Sahil Bhosale 15 Februar 2024
  1. Bitweise Operatoren in OpenCV
  2. Verwenden Sie den Bitwise AND-Operator für Bilder in OpenCV
Verwenden Sie Bitwise_AND auf einem Bild mit OpenCV

Die bitweisen Operatoren werden normalerweise verwendet, um bitweise Operationen an Mustern von Bits oder Binärzahlen durchzuführen, die eine individuelle Bitmanipulation verwenden. OpenCV verwendet dasselbe Konzept, um Informationen aus den Bildern zu manipulieren und zu extrahieren.

In diesem Artikel werden wir speziell sehen, wie man Bitwise AND mit der Python OpenCV-Bibliothek verwendet.

Bitweise Operatoren in OpenCV

Die grundlegenden bitweisen Operatoren, die in OpenCV verwendet werden, lauten wie folgt.

  1. Bitweises UND
  2. Bitweises ODER
  3. Bitweises NICHT
  4. Bitweises XOR

Bitweise Operatoren werden in OpenCV verwendet, damit wir den Teil eines Bildes extrahieren oder herausfiltern können, das Bild darstellen und mit nicht rechteckigen ROIs (Region of Interest) arbeiten können.

Verwenden Sie den Bitwise AND-Operator für Bilder in OpenCV

In OpenCV wird der Bitwise AND-Operator verwendet, um zwei verschiedene Bilder zu einem zu kombinieren, oder er kann einen Teil eines Bildes mit einem anderen kombinieren. Es berechnet im Allgemeinen die bitweise logische Kombination pro Element von zwei Arrays/Skalar/Bildern.

OpenCV hat eine eingebaute Methode, um bitweise Operationen durchzuführen. Für den Bitwise AND-Operator in OpenCV verwenden wir also cv.bitwise_and().

Syntax von Python OpenCV bitwise_and()

cv.bitwise_and(src1, src2[, dst[, mask]]) -> dst

Parameter

src1 erstes Eingabearray / Bild.
src2 zweites Eingabearray / Bild.
dst Ausgabebild mit derselben Größe und demselben Typ wie das Eingabearray.
mask optionale Operationsmaske, ein 8-Bit-Einzelkanalarray, das die zu ändernden Elemente des Ausgangsarrays angibt.

Sehen wir uns anhand des unten gezeigten Beispiels an, wie der Operator Bitwise AND auf ein Bild angewendet wird.

Zuerst müssen wir OpenCV als cv importieren und dann mit der imread()-Methode von OpenCV zwei Bilder mit imread() lesen. Diese Methode liest das bereitgestellte Bild und gibt die Bilddaten im Array-Format zurück.

Nun müssen wir diese Daten, die von imread() zurückgegeben werden, in den Variablen namens img1 und img2 speichern. Bevor Sie das Bitwise AND anwenden, müssen Sie sicherstellen, dass die beiden verwendeten Bilder die gleiche Form haben, dh die gleiche Breite, Höhe und Anzahl der Kanäle.

Wenn Sie sich bezüglich der Bildform unsicher sind, können Sie die shape()-Methode von OpenCV wie folgt verwenden.

Code-Auszug:

# import opencv
import cv2 as cv

# read the images
img1 = cv.imread("img1.jpg")
img2 = cv.imread("img2.jpg")

print("Shape of img_1 : ", img1.shape)
print("Shape of img_2 : ", img2.shape)

dimension = (img2.shape[1], img2.shape[0])
img1 = cv.resize(img1, dimension, interpolation=cv.INTER_AREA)

print("Shape of img_1 : ", img1.shape)
print("Shape of img_2 : ", img2.shape)

Ausgang:

Shape of img_1 : (4000, 6000, 3)
Shape of img_2 : (3133, 4700, 3)

Shape of img_1 : (3133, 4700, 3)
Shape of img_2 : (3133, 4700, 3)

In den meisten Fällen ist die Größe der beiden Bilder nicht gleich, daher müssen Sie die Bildgröße möglicherweise mit der Methode resize() ändern, wie im obigen Code gezeigt. In diesem Fall können Sie entweder die Größe eines beliebigen Bildes oder die Größe beider Bilder ändern.

In diesem Beispiel ändern wir die Größe von img1 mit der Methode resize() wie oben gezeigt in die Größe von img2.

Code-Auszug:

bitwise_AND = cv.bitwise_and(img1, img2)

cv.imshow("Image-1", img1)
cv.imshow("Image-2", img2)
cv.imshow("Bitwise-AND", bitwise_AND)

cv.waitKey(0)

Jetzt, da wir die beiden Bilder der gleichen Größe haben, können wir mit cv.bitwise_and() eine Bitwise AND-Operation an den gegebenen zwei Bildern ausführen und die Ausgabe in der Variablen namens bitwise-AND speichern. Um alle Eingabe-, Ausgabe- und resultierenden Bilder anzuzeigen, verwenden wir die Funktion imshow().

Wir zeigen alle Bilder an, um zu verdeutlichen, wie die Eingabebilder für das Ausgabebild angezeigt werden. So sieht die Ausgabe des obigen Codes aus.

Ändern Sie die Größe der Bilder und verwenden Sie bitwise_and(), um eine bitweise UND-Operation durchzuführen

Wir verwenden auch die Methode waitKey() und übergeben ihr den Wert 0, weil sie es Benutzern ermöglicht, ein Fenster für kurze Zeit oder bis eine beliebige Taste gedrückt wird, anzuzeigen. Wenn also im Argument 0 übergeben wird, wartet es, bis eine beliebige Taste gedrückt wird.

So führen wir Bitwise AND an zwei gleich grossen Bildern durch.

Sahil Bhosale avatar Sahil Bhosale avatar

Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.

LinkedIn

Verwandter Artikel - Python OpenCV