En este artículo, discutiremos cómo eliminar el fondo negro y hacerlo transparente en Python OpenCV .
método cv2.cvtColor
El método cv2.cvtColor() se usa para convertir una imagen de un espacio de color a otro. Hay más de 150 métodos de conversión de espacio de color disponibles en OpenCV.
Sintaxis: cv2.cvtColor(origen, código[, dst[, dstCn]])
Parámetros:
- origen: imagen
- código: Es el código de conversión del espacio de color.
- dst: ( opcional ), es la imagen de salida del mismo tamaño y profundidad que la imagen src.
- dstCn: ( opcional ), es el número de canales en la imagen de destino
Valor devuelto: Devuelve una imagen.
Imagen utilizada para la demostración :
Implementación paso a paso:
Paso 1: en primer lugar, importa la biblioteca OpenCV.
import cv2
Paso 2: Ahora, importa la imagen desde tu computadora.
file_name = "#Image-Location"
Paso 3: Luego, lee la imagen en OpenCV.
src = cv2.imread(file_name, 1)
Paso 4: Luego, convierta el fondo de la imagen en un fondo de imagen gris.
tmp = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
Paso 5: Además, aplique la técnica de umbralización.
_,alfa = cv2.umbral(tmp,0,255,cv2.UMBRAL_BINARIO)
Paso 6: Además, use cv2.split() para dividir los canales de la imagen en color.
b, g, r = cv2.split(src)
Paso 7: Más tarde, haga una lista de los canales rojo, verde y azul y alfa.
rgba = [b,g,r, alpha]
Paso 8: A continuación, utilice cv2.merge() para fusionar rgba en una imagen coloreada/multicanal.
dst = cv2.merge(rgba,4)
Paso 9: finalmente, escriba y guarde en una nueva ubicación de imagen.
cv2.imwrite("#New-Image-Location", dst)
A continuación se muestra la implementación completa:
Python3
# Import the library OpenCV import cv2 # Import the image file_name = "gfg_black.png" # Read the image src = cv2.imread(file_name, 1) # Convert image to image gray tmp = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY) # Applying thresholding technique _, alpha = cv2.threshold(tmp, 0, 255, cv2.THRESH_BINARY) # Using cv2.split() to split channels # of coloured image b, g, r = cv2.split(src) # Making list of Red, Green, Blue # Channels and alpha rgba = [b, g, r, alpha] # Using cv2.merge() to merge rgba # into a coloured/multi-channeled image dst = cv2.merge(rgba, 4) # Writing and saving to a new image cv2.imwrite("gfg_white.png", dst)
Producción: