Vamos a conocer los métodos que nos ofrece OpenCV para realizar operaciones aritméticas con imágenes.
Para realizar la suma de imágenes haremos uso de la función:
cv2.add (arg1, arg2)
arg1 --> Imagen 1 o matriz con su ruta o path en caso de ser necesario.
arg2 --> Imagen 2 o matriz con su ruta o path en caso de ser necesario.
El funcionamiento de la función de adición puede resumirse de la forma siguiente. Una imagen es una matriz de datos, que como hemos explicado anteriormente tiene tres capas de fondo para los colores BGR (OpenCV utiliza esta codificación de color en lugar de RGB) y en cada capa tantas filas y columnas como píxeles tenga nuestra imagen de alto (filas) y ancho (columnas). Lo que hace, básicamente cv2.add( ) es tomar uno a uno cada pixel y sumarlo. Si tomamos una imagen1 que tiene el pixel img1[0,0] = 60 y la queremos sumar con otra imagen2 img2[0,0] = 110, nos dará como resultado una imagen resA=[0,0] = 170, sin embargo, si tomamos una imagen1 que tiene el pixel img1[1,1] = 60 y la queremos sumar con otra imagen2 img2[1,1] = 210, nos dará como resultado una imagen resA=[1,1] = 255, ya que aunque la suma de 60+210 = 270, como excede a 255, la función devuelve 255.
Para realizar la suma de imágenes haremos uso de la función:
cv2.subtract (arg1, arg2)
arg1 --> Imagen 1 o matriz con su ruta o path en caso de ser necesario.
arg2 --> Imagen 2 o matriz con su ruta o path en caso de ser necesario.
El funcionamiento de la función de sustracción tiene el mismo criterio que el de la adición. La función cv2.subract( ) es tomar uno a uno cada pixel y restarlo. Si tomamos una imagen1 que tiene el pixel img1[0,0] = 60 y la queremos sumar con otra imagen2 img2[0,0] = 10, nos dará como resultado una imagen resA=[0,0] = 50, sin embargo, si tomamos una imagen1 que tiene el pixel img1[1,1] = 60 y la queremos sumar con otra imagen2 img2[1,1] = 210, nos dará como resultado una imagen resA=[1,1] = 0, ya que aunque la resta de 60-210 = -150, como excede en negativo a 0, la función devuelve 0.
cv2.absdiff(arg1, arg2)
arg1 --> Imagen 1 o matriz con su ruta o path en caso de ser necesario.
arg2 --> Imagen 2 o matriz con su ruta o path en caso de ser necesario.
Esta función calcula la diferencia en valor absoluto de dos valores, por lo tanto |65 – 226| = |-161|, ya que está en valor absoluto, su resultado final será 161.
Para realizar la suma de imágenes haremos uso de la función:
cv2.addWeighted (arg1, arg2, arg3, arg4, arg5)
arg1 --> Imagen 1 o matriz con su ruta o path en caso de ser necesario.
arg2 --> Alpha (Peso de la primera matriz) Valor entre 0 y 1 para modificar la transparencia de la imagen (1 tal como es, 0 totalmente transparente)
arg3 --> Imagen 2 o matriz con su ruta o path en caso de ser necesario.
arg4 --> Beta (Peso de la segunda matriz) Valor entre 0 y 1 para modificar la transparencia de la imagen (1 tal como es, 0 totalmente transparente)
arg5 --> Gamma (Escalar añadido a la suma) si ponemos 0 no sumará ningún valor adicional.