Utilice Bitwise_AND en una imagen usando OpenCV

Sahil Bhosale 15 febrero 2024
  1. Operadores bit a bit en OpenCV
  2. Utilice el operador Y bit a bit en imágenes en OpenCV
Utilice Bitwise_AND en una imagen usando OpenCV

Los operadores bit a bit se utilizan normalmente para realizar operaciones bit a bit en patrones de bits o números binarios que utilizan la manipulación de bits individuales. OpenCV utiliza este mismo concepto para manipular y extraer información de las imágenes.

En este artículo, veremos específicamente cómo utilizar Bitwise AND utilizando la biblioteca Python OpenCV.

Operadores bit a bit en OpenCV

Los operadores bit a bit básicos utilizados en OpenCV son los siguientes.

  1. Y bit a bit
  2. O bit a bit
  3. Bitbit NO
  4. XOR bit a bit

Los operadores bit a bit se utilizan en OpenCV para que podamos extraer o filtrar la parte de una imagen, retratando la imagen y operando con ROI no rectangulares (Región de interés).

Utilice el operador Y bit a bit en imágenes en OpenCV

En OpenCV, el operador Bitwise AND se usa para combinar dos imágenes diferentes en una sola, o puede combinar alguna parte de una imagen en otra. Por lo general, calcula la combinación lógica bit a bit por elemento de dos matrices/escalares/imágenes.

OpenCV tiene un método incorporado para realizar operaciones bit a bit. Entonces, para el operador Bitwise AND en OpenCV, usamos cv.bitwise_and().

Sintaxis de Python OpenCV bitwise_and()

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

Parámetros

src1 primera matriz / imagen de entrada.
src2 segunda matriz/imagen de entrada.
dst imagen de salida con el mismo tamaño y tipo que la matriz de entrada.
mask máscara de operación opcional, matriz de un solo canal de 8 bits que especifica los elementos de la matriz de salida que se cambiarán.

Veamos cómo usar el operador Y bit a bit en una imagen con un ejemplo que se muestra a continuación.

Primero, tenemos que importar OpenCV como cv, y luego usando el método imread() de OpenCV, tenemos que leer dos imágenes usando imread(). Este método leerá la imagen proporcionada y devolverá los datos de la imagen en formato de matriz.

Ahora, tenemos que almacenar estos datos que son devueltos por imread() dentro de las variables llamadas img1 e img2. Antes de aplicar el Y bit a bit, debe asegurarse de que las dos imágenes que está utilizando tengan la misma forma, es decir, el mismo ancho, alto y número de canales.

Si no está seguro de la forma de la imagen, puede usar el método shape() de OpenCV de la siguiente manera.

Fragmento de código:

# 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)

Producción :

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)

En la mayoría de los casos, el tamaño de las dos imágenes no será el mismo, por lo que es posible que deba cambiar el tamaño de las imágenes utilizando el método cambiar tamaño (), como se muestra en el código anterior. En este caso, puede cambiar el tamaño de una imagen o los tamaños de ambas imágenes.

Para este ejemplo, cambiaremos el tamaño de img1 usando el método resize() como el tamaño de img2 como se muestra arriba.

Fragmento de código:

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)

Ahora que tenemos las dos imágenes del mismo tamaño, podemos usar cv.bitwise_and() para realizar una operación Bitwise AND en las dos imágenes dadas y almacenar la salida en la variable llamada bitwise-AND. Para mostrar todas las imágenes de entrada, salida y resultantes, utilizaremos la función imshow().

Estamos mostrando todas las imágenes para aclarar cómo se muestran las imágenes de entrada para la imagen de salida. Así es como se verá la salida del código anterior.

cambie el tamaño de las imágenes y use bitwise_and() para realizar la operación Bitwise AND

También usamos el método waitKey() y le pasamos el valor 0 porque permite a los usuarios mostrar una ventana durante un período corto o hasta que se presiona cualquier tecla. Entonces, si se pasa 0 en el argumento, espera hasta que se presione cualquier tecla.

Así es como realizamos Bitwise AND en dos imágenes del mismo tamaño.

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

Artículo relacionado - Python OpenCV