Bit de imagen OpenCV-Python y operación bitwise_and explicación detallada de la función

Ir al blog de LaoYuanPython https://blog.csdn.net/LaoYuanPython

I. Resumen

La operación AND de una imagen se utiliza principalmente para obtener la parte de interés en una imagen. Es un AND bit a bit de dos matrices de matrices de imágenes o una matriz y un escalar. El resultado se calcula de la siguiente manera:

  1. Cuando las dos matrices de matriz de imagen representadas por src1 y src2 tienen el mismo tamaño, el valor del elemento de matriz resultante es:
    dst(I)=src1(I)∧src2(I) if mask(I)≠0
  2. Cuando src1 es una matriz de matriz y src2 es un escalar, el valor del elemento de matriz resultante es: el
    dst(I)=src1(I)∧src2 if mask(I)≠0
    escalar específico puede ser una constante o una tupla de cuatro que representa BGRA a través de la antigua prueba de mono. No se confirma si hay otras formas, pero una tupla de dos La suma triple definitivamente no es buena. Si es una constante, OpenCV la convertirá en una tupla de 4 que representa a BGRA para participar en la operación. El primer elemento del cuádruple es la constante y los otros elementos son 0.
  3. Cuando src1 es un escalar y src2 es una matriz de matriz, el valor del elemento de matriz resultante es: el
    dst(I)=src1∧src2(I) if mask(I)≠0
    valor escalar es el mismo que en el escenario anterior.

Con respecto al proceso de cálculo anterior, la explicación complementaria es la siguiente:

  1. En el caso de matrices de coma flotante, las operaciones de bits están relacionadas con el método de representación de bits relacionado con el entorno de la máquina (generalmente compatible con IEEE754);
  2. En el caso de una matriz de matriz multicanal, cada canal se procesa de forma independiente;
  3. En el segundo y tercer caso anteriores, si el escalar es una constante o una sola variable numérica, primero se convierte en un cuádruple.

2. Descripción gramatical

Prototipo de función:

bitwise_and(src1, src2, dst=None, mask=None)

Descripción de parámetros:
  • src1, src2: imagen de entrada o escalar, escalar puede ser un valor único o una tupla de cuatro
  • dst: variable de salida opcional, si necesita usar que no sea Ninguno, primero debe definirla, y su tamaño es el mismo que la variable de entrada
  • máscara: máscara de imagen, parámetro opcional, imagen en escala de grises de un solo canal de 8 bits, que se utiliza para especificar los elementos de la matriz de imágenes de salida que se van a cambiar, es decir, los píxeles de la imagen de salida se emiten solo si el elemento de posición correspondiente de la máscara no es 0, de lo contrario Todos los componentes del canal del píxel en esta posición se establecen en 0

El valor de retorno es la matriz de la imagen de resultado. Si el parámetro real se pasa en dst, el valor de retorno es el mismo que el correspondiente parámetro real de dst.

3. Caso:

El siguiente ejemplo carga una imagen en la memoria y luego la multiplica por un valor y una matriz de máscara construida. La imagen original cargada imgs.jpg es una imagen en color de tres canales con un tamaño de 720 * 600. La imagen es la siguiente: el
Inserte la descripción de la imagen aquí
código del caso es el siguiente:

import numpy as np
import cv2
def main():
    imgSrc = cv2.imread(r'F:\pic\imgs.JPG')
    # 下面2行代码构造输出OpenCV图标的掩膜,255确保所有位都是1
    imgMask = np.zeros(imgSrc.shape,dtype=np.uint8)
    imgMask[20:190,580:715] = 255 
  

    resultImg1 = cv2.bitwise_and(imgSrc, imgMask)
    resultImg2 = cv2.bitwise_and(imgSrc, 255)
    resultImg3 = cv2.bitwise_and(imgSrc, (255,255,255,255))

    cv2.imshow('resultImg1', resultImg1)
    cv2.imshow('resultImg2', resultImg2)
    cv2.imshow('resultImg3', resultImg3)
    cv2.waitKey(0)
 
main()

Las tres imágenes de salida son las siguientes:
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
puede ver que el valor de 255 y la matriz de imágenes y el tiempo solo retienen el valor de píxel del canal B, y las imágenes son todas azules.

Cuatro, resumen

Este artículo presenta en detalle la sintaxis y el método de cálculo de la función bitwise_and de la imagen OpenCV-Python, e ilustra el AND bit a bit de imágenes y escalares, y el AND bit a bit de imágenes e imágenes de máscara construidas. Se puede ver que bitwise_and puede controlar la selección del canal de interés (ajustar el valor del elemento del cuádruple) o área de salida. Al mismo tiempo, bitwise_and se puede usar para enmascarar ciertas áreas de la imagen para que no participen en el procesamiento, y también se puede usar para la extracción de características estructurales de la imagen, usando variables de similitud o métodos de coincidencia de imágenes para detectar y extraer características estructurales similares en la imagen.

Si crees que este artículo puede ser útil para ti, por favor ayúdame a dar me gusta y agregar un favorito, ¡gracias!

Para obtener más información sobre OpenCV-Python, consulte el artículo relacionado en la columna " Procesamiento de imágenes y gráficos OpenCV-Python ".

Columna pagada sobre el viejo simio

La columna de pago de Lao Yuan " Uso de PyQt para desarrollar aplicaciones de Python de interfaz gráfica " presenta específicamente el tutorial básico del desarrollo de interfaz gráfica de PyQt basado en Python, y la columna de pago "Columna de desarrollo de audio y video de Moviepy " detalla los métodos relacionados y el uso del procesamiento de síntesis y edición de audio y video de Moviepy. Método para procesar escenas de síntesis y edición relacionadas. Ambas columnas son adecuadas para lectores novatos que tienen cierta base de Python pero no tienen conocimientos relevantes.

Directorio de artículos de columnas pagadas : " Directorio de artículos de columnas de desarrollo de audio y video de Moviepy ", " Utilice PyQt para desarrollar el directorio de columnas de aplicaciones Python de interfaz gráfica ".

Para aquellos que carecen de la base de Python, pueden aprender Python desde cero a través de la columna gratuita de Lao Yuan " Columna: Directorio de tutoriales básicos de Python ".

Si está interesado y dispuesto a apoyar a los lectores de Old Ape, bienvenido a comprar columnas pagas.

¡Aprenda Python y OpenCV del viejo simio!

☞ ° al directorio antiguo de simios Python Bowen .

Supongo que te gusta

Origin blog.csdn.net/LaoYuanPython/article/details/109148867
Recomendado
Clasificación