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.
Bitweises UND
Bitweises ODER
Bitweises NICHT
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.
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 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