Cartooning una imagen usando OpenCV - Python
La caricatura de una imagen convierte una foto normal en una divertida imagen de estilo animado. Con OpenCV hacemos esto al suavizar la imagen para simplificar los colores y detectar bordes para crear contornos. Combinar estos pasos hace que la foto parezca una caricatura.
Prerrequisitos: Módulo OpenCV
Acercarse
- Lea la imagen de entrada.
- Convierta la imagen a escala de grises para la detección de borde.
- Aplique un desenfoque medio para eliminar el ruido.
- Use el umbral adaptativo para detectar bordes.
- Aplique un filtro bilateral para suavizar la imagen mientras preserva los bordes.
- Combine la imagen suavizada con bordes para producir el efecto de dibujos animados.
Implementación de Python
Python import cv2 img = cv2 . imread ( 'Screenshot.webp' ) if img is None : print ( 'Image not found' ) exit () # Prep grayscale & blur g = cv2 . cvtColor ( img cv2 . COLOR_BGR2GRAY ) g = cv2 . medianBlur ( g 5 ) # Edges e = cv2 . adaptiveThreshold ( g 255 cv2 . ADAPTIVE_THRESH_MEAN_C cv2 . THRESH_BINARY 9 9 ) # Smooth color c = cv2 . bilateralFilter ( img 9 250 250 ) # Combine cartoon = cv2 . bitwise_and ( c c mask = e ) cv2 . imshow ( 'Cartoon' cartoon ) cv2 . imwrite ( 'cartoon_output.webp' cartoon ) cv2 . waitKey ( 0 ) cv2 . destroyAllWindows ()
Producción:
Imagen original
Imagen de salida de dibujos animados Explicación:
- CV2.CVTColor () Convierte la imagen en escala de gris para la detección de borde.
- cv2.medianBlur() Elimina el ruido para los bordes más limpios.
- cv2.AdaptivethReshold () detecta bordes que dan un efecto similar al boceto.
- cv2.bilateralfilter () s MOOTHS Colors mientras mantiene los bordes afilados.
- cv2.bitwise_and () Combina colores y bordes suavizado para el efecto de dibujos animados.