Eliminar fondo negro y hacer transparente usando Python OpenCV

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:

Removing black background and make transparent in python opencv

 

Publicación traducida automáticamente

Artículo escrito por vin8rai y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *