CodeGym /Curso de Java /Python SELF ES /Aplicación de filtros visuales y efectos: cambio de brill...

Aplicación de filtros visuales y efectos: cambio de brillo, contraste y color

Python SELF ES
Nivel 48 , Lección 1
Disponible

1. Efectos visuales

Introducción a los efectos visuales

Hoy aprenderemos no solo a cambiar el brillo y el contraste, sino también a darles un toque especial a tus creaciones, no peor que en los blockbusters de Hollywood. O al menos hacer que tu video sea más agradable de ver, si se grabó con un teléfono viejito.

Cuando se trata de edición de video, saber cómo aplicar efectos visuales es tu ingrediente secreto para crear contenido que atraiga la atención. Los efectos visuales pueden ayudar a que un video sea más brillante, resaltar detalles importantes o transformar el estilo general del clip.

Fundamentos del cambio de brillo, contraste y color

Antes de pasar a la práctica, refresquemos nuestra comprensión de qué son el brillo, el contraste y el color en el contexto de los videos.

  • Brillo: es la luminosidad o oscuridad general de una imagen. Aumentar el brillo hace que el video se vea más claro, mientras que reducirlo lo oscurece.
  • Contraste: es la diferencia entre las partes más claras y las más oscuras del video. Un alto contraste hace que el video sea más vibrante, mientras que un bajo contraste lo hace más apagado.
  • Corrección de color: es el proceso de ajustar el balance de color para mejorar la calidad del video.

2. Cambio de brillo del video

Ahora vamos a sumergirnos en el código y ver cómo se pueden aplicar estos efectos utilizando MoviePy.

Cambiar el brillo del video con el método fl_image()

El cambio de brillo del video se puede lograr con el método fl_image, que permite aplicar funciones personalizadas a todos los fotogramas del video. Si deseas aumentar el brillo en un 20%, especifica un multiplicador de 1.2

Python

from moviepy.editor import VideoFileClip

# Función para cambiar el brillo
def change_brightness(image, factor=1.2):
    return image * factor

# Abriendo el archivo de video
clip = VideoFileClip("video.mp4")

# Aplicando el cambio de brillo
brightened_clip = clip.fl_image(lambda frame: change_brightness(frame, 1.2))

# Guardando el resultado
brightened_clip.write_videofile("brightened_video.mp4")

Cambiar brillo del video usando moviepy.video.fx.all

También se puede cambiar el brillo del video usando el efecto lum_contrast, que permite aumentar o disminuir el brillo del clip.

Aumentar el brillo del video

Python

from moviepy.editor import VideoFileClip
from moviepy.video.fx.all import lum_contrast

# Cargar el video
video = VideoFileClip("sample_video.mp4")

# Aplicar el efecto para aumentar el brillo
bright_video = lum_contrast(video, lum=30)  # Aumentar el brillo en 30 unidades

# Guardar el resultado
bright_video.write_videofile("bright_video.mp4")

En este ejemplo:

  • lum_contrast(video, lum=30) aumenta el brillo del video en 30 unidades. El valor del brillo puede ser positivo (para aumentar) o negativo (para disminuir).

Reducir el brillo del video

Python

# Aplicar el efecto para reducir el brillo
dark_video = lum_contrast(video, lum=-30)  # Reducir el brillo en 30 unidades

# Guardar el resultado
dark_video.write_videofile("dark_video.mp4")

3. Cambio de contraste del video

El contraste de un video afecta la luminosidad y la saturación de las áreas claras y oscuras. Aumentar el contraste hace que las áreas claras sean más brillantes y las oscuras más oscuras, mientras que reducirlo disminuye la diferencia entre estas áreas.

Cambiar el contraste con el método fl_image()

El contraste se puede cambiar de manera similar utilizando una función de transformación de imagen. Aquí está cómo hacerlo:

Python

import numpy as np

# Función para cambiar el contraste
def change_contrast(image, factor=1.5):
    mean = np.mean(image)
    return (image - mean) * factor + mean

# Aplicar el cambio de contraste
contrasted_clip = clip.fl_image(lambda frame: change_contrast(frame, 1.5))

# Guardar el resultado
contrasted_clip.write_videofile("contrasted_video.mp4")

Cambiar el contraste con el método lum_contrast()

Aumentar el contraste del video

Python

# Aumentar el contraste
high_contrast_video = lum_contrast(video, contrast=1.5)  # Aumentar el contraste en un 50%

# Guardar el resultado
high_contrast_video.write_videofile("high_contrast_video.mp4")

Aquí:

  • contrast = 1.5 aumenta el contraste en un 50%. Se puede especificar cualquier valor mayor a 1 para incrementarlo.

Reducir el contraste del video

Python

# Reducir el contraste
low_contrast_video = lum_contrast(video, contrast=0.5)  # Reducir el contraste en un 50%

# Guardar el resultado
low_contrast_video.write_videofile("low_contrast_video.mp4")

Aquí:

  • contrast = 0.5 reduce el contraste en un 50%. Los valores menores a 1 disminuyen el contraste, haciendo la imagen menos vibrante.

4. Cambios en las características de color del video

MoviePy ofrece herramientas para cambiar la paleta de colores, transformar imágenes a modo blanco y negro, y otros efectos relacionados con el color.

Corrección de color utilizando el método fl_image()

Para corrección de color, podemos usar una función como rgb_color, que transforma la paleta de colores del video.

Python

def adjust_color(image, factor=0.8):
    return image * np.array([1, factor, factor])  # Reducir los canales verde y azul

# Aplicar la corrección de color
color_corrected_clip = clip.fl_image(lambda frame: adjust_color(frame, 0.8))

# Guardar el resultado
color_corrected_clip.write_videofile("color_corrected_video.mp4")

Corrección de color con moviepy.video.fx.all

MoviePy permite cambiar la paleta de colores, convertir una imagen a blanco y negro y aplicar otros efectos de color.

Convertir un video a modo blanco y negro

Para crear un video en blanco y negro, se puede usar el método fx con la función blackwhite.

Python

from moviepy.video.fx.all import blackwhite

# Convertir el video a blanco y negro
bw_video = blackwhite(video)

# Guardar el resultado
bw_video.write_videofile("black_and_white_video.mp4")

Aquí:

  • blackwhite(video) convierte el video a tonos de gris.

Inversión de colores en el video

MoviePy permite crear un efecto de inversión de colores, útil para efectos dramáticos o artísticos.

Python

from moviepy.video.fx.all import invert_colors

# Invertir colores del video
inverted_video = invert_colors(video)

# Guardar el resultado
inverted_video.write_videofile("inverted_video.mp4")

Aquí:

  • invert_colors(video) invierte todos los colores del video, creando un efecto de negativo.

5. Aplicación de filtros

Aplicar filtros de color para un efecto sepia

Para crear un efecto sepia que da un tono cálido de marrón al video, se puede aplicar un filtro. En MoviePy, esto se hace ajustando manualmente los canales de color.

Crear un efecto sepia

Python

from moviepy.video.fx.all import colorx

# Aplicar efecto sepia (reducir canales azul y verde)
sepia_video = colorx(video, 0.9)

# Guardar el resultado
sepia_video.write_videofile("sepia_video.mp4")

En este ejemplo:

  • colorx(video, 0.9) reduce la saturación de colores. También puedes combinar este efecto con otros para obtener tonos cálidos.

Uso de filtros personalizados

Si necesitas crear un efecto de color único, MoviePy permite escribir tus propios filtros. Esto se hace creando una función que se aplicará a cada fotograma del video.

Crear un filtro personalizado para realzar el canal rojo

Python

import numpy as np

# Función personalizada para realzar el canal rojo
def enhance_red(image):
    image[:, :, 0] = np.clip(image[:, :, 0] * 1.5, 0, 255)  # Realzar el canal rojo
    return image

# Aplicar el filtro personalizado
red_video = video.fl_image(enhance_red)

# Guardar el resultado
red_video.write_videofile("enhanced_red_video.mp4")

En este ejemplo:

  • La función enhance_red(image) realza el canal rojo de la imagen, haciéndolo más vibrante.
  • fl_image() aplica esta función a cada fotograma del video, creando el efecto de realce del canal rojo.

Problemas y soluciones

A primera vista, parece que hacer un video más vibrante es sencillo. Sin embargo, al igual que en la programación, siempre hay matices. Por ejemplo, un brillo demasiado alto puede "quemar" los detalles en las áreas claras, y un contraste excesivo puede hacer que el video parezca "ruidoso". Se recomienda realizar estos ajustes de manera gradual y verificar el resultado en pequeños fragmentos del video.

Además, no olvides el rendimiento. Cambiar cada fotograma es un proceso que consume recursos. Es razonable asegurarte de que el video no sea demasiado largo cuando experimentes con efectos.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION