The bitwise operators are typically used to perform bitwise operations on patterns of bits or binary numbers that use individual bit manipulation. OpenCV uses this same concept to manipulate and extract information from the images.
In this article, we will specifically see how to utilize
Bitwise AND using the Python OpenCV library.
Bitwise Operators in OpenCV
The basic bitwise operators used in OpenCV are as follows.
Bitwise operators are used in OpenCV so that we can extract or filter out the part of an image, portraying the image and operating with non-rectangular ROIs (Region of Interest).
Bitwise AND Operator on Images in OpenCV
In OpenCV, the
Bitwise AND operator is used to combine two different images into one, or it can combine some part of an image into another. It generally computes the bitwise logical combination per element of two arrays/scalar/images.
OpenCV has an inbuilt method to perform bitwise operations. So for
Bitwise AND operator in OpenCV, we use
Syntax of Python OpenCV
cv.bitwise_and( src1, src2[, dst[, mask]] ) -> dst
||first input array / image.|
||second input array / image.|
||output image with the same size and type as the input array.|
||optional operation mask, 8-bit single channel array that specifies elements of the output array to be changed.|
Let’s see how to use the
Bitwise AND operator on an image with an example shown below.
First, we have to import OpenCV as
cv, and then using the
imread() method of OpenCV, we have to read two images using
imread(). This method will read the provided image and return the image data in array format.
Now, we have to store this data that is returned by the
imread() inside the variables named
img2. Before applying the
Bitwise AND, you must ensure that the two images you are using have the same shape, meaning the same width, height, and number of channels.
If you are unsure about the image shape, you can use the
shape() method of OpenCV as follows.
# 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, img2.shape) img1 = cv.resize(img1, dimension, interpolation = cv.INTER_AREA) print('Shape of img_1 : ', img1.shape) print('Shape of img_2 : ', img2.shape)
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 most cases, the size of the two images will not be the same, so you might have to resize the image sizes using the
resize() method, as shown in the above code. In this case, you can either change the size of any one image or the sizes of both images.
For this example, we will change the size of
img1 using the
resize() method as that of the size of
img2 as shown above.
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)
Now that we have the two images of the same size, we can use the
cv.bitwise_and() to perform a
Bitwise AND operation on the given two images and store the output in the variable named
bitwise-AND. To display all the input, output, and resultant images, we will use the
We are displaying all the images to clarify how the input images are displayed for the output image. This is what the output of the above code will look like.
We also use the
waitKey() method and pass the value
0 to it because it allows users to display a window for a short period or until any key is pressed. So, if
0 is passed in the argument, it waits until any key is pressed.
This is how we perform
Bitwise AND on two images of the same sizes.
- No Module Named CV2 in Mac in Python
- Image Masking in OpenCV
- OpenCV Package Configuration
- OpenCV ArUco Markers
- SIFT Using OpenCV in Python