CodeGym /Khóa học Java /Python SELF VI /Áp dụng bộ lọc trực quan và hiệu ứng: thay đổi độ sáng, đ...

Áp dụng bộ lọc trực quan và hiệu ứng: thay đổi độ sáng, độ tương phản và màu sắc

Python SELF VI
Mức độ , Bài học
Có sẵn

1. Hiệu ứng trực quan

Giới thiệu về hiệu ứng trực quan

Hôm nay tụi mình sẽ học không chỉ thay đổi độ sáng và độ tương phản mà còn giúp tác phẩm của bạn có phong cách đặc biệt, chất lượng như trong các phim bom tấn Hollywood. Hoặc ít nhất là làm video của bạn nhìn dễ chịu hơn, nếu nó được quay bằng điện thoại cũ.

Khi xử lý video, biết cách áp dụng hiệu ứng trực quan chính là bí mật để tạo ra nội dung thu hút. Hiệu ứng trực quan có thể giúp video trở nên sáng hơn, làm nổi bật các chi tiết quan trọng hoặc thay đổi phong cách tổng thể của clip.

Các nguyên tắc cơ bản về thay đổi độ sáng, độ tương phản và màu sắc

Trước khi đi vào thực hành, hãy cùng ôn lại khái niệm độ sáng, độ tương phản và màu sắc trong ngữ cảnh của video.

  • Độ sáng — là độ sáng tối tổng quát của hình ảnh. Tăng độ sáng làm cho video sáng hơn, giảm thì làm tối hơn.
  • Độ tương phản — là sự khác biệt giữa các vùng sáng nhất và tối nhất của video. Độ tương phản cao làm video sắc nét hơn, còn thấp thì làm video trông bằng phẳng.
  • Chỉnh màu — là quá trình thay đổi cân bằng màu để cải thiện chất lượng video.

2. Thay đổi độ sáng của video

Bây giờ chúng ta sẽ nhảy vào mã và xem cách áp dụng các hiệu ứng này với MoviePy.

Thay đổi độ sáng video bằng phương thức fl_image()

Thay đổi độ sáng của video có thể thực hiện bằng phương thức fl_image, cho phép áp dụng các hàm tự định nghĩa lên tất cả các khung hình. Nếu bạn muốn tăng độ sáng 20%, hãy chỉ định hệ số nhân là 1.2

Python

from moviepy.editor import VideoFileClip

# Hàm thay đổi độ sáng
def change_brightness(image, factor=1.2):
    return image * factor

# Mở tệp video
clip = VideoFileClip("video.mp4")

# Áp dụng thay đổi độ sáng
brightened_clip = clip.fl_image(lambda frame: change_brightness(frame, 1.2))

# Lưu kết quả
brightened_clip.write_videofile("brightened_video.mp4")

Thay đổi độ sáng video bằng moviepy.video.fx.all

Thay đổi độ sáng video cũng có thể thực hiện với hiệu ứng lum_contrast, cho phép tăng hoặc giảm độ sáng của clip.

Tăng độ sáng video

Python

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

# Tải video
video = VideoFileClip("sample_video.mp4")

# Áp dụng hiệu ứng để tăng độ sáng
bright_video = lum_contrast(video, lum=30)  # Tăng độ sáng thêm 30 đơn vị

# Lưu kết quả
bright_video.write_videofile("bright_video.mp4")

Trong ví dụ này:

  • lum_contrast(video, lum=30) tăng độ sáng của video thêm 30 đơn vị. Giá trị độ sáng có thể là dương (để tăng độ sáng) hoặc âm (để giảm độ sáng).

Giảm độ sáng video

Python

# Áp dụng hiệu ứng để giảm độ sáng
dark_video = lum_contrast(video, lum=-30)  # Giảm độ sáng thêm 30 đơn vị

# Lưu kết quả
dark_video.write_videofile("dark_video.mp4")

3. Thay đổi độ tương phản của video

Độ tương phản của video ảnh hưởng đến độ sáng và độ bão hòa của các vùng sáng và tối. Tăng độ tương phản làm cho vùng sáng trở nên sáng hơn và vùng tối trở nên tối hơn, trong khi giảm độ tương phản sẽ giảm sự khác biệt giữa các vùng sáng và tối.

Thay đổi độ tương phản bằng phương thức fl_image()

Có thể thay đổi độ tương phản theo cách tương tự bằng cách sử dụng hàm chuyển đổi hình ảnh. Đây là cách thực hiện:

Python

import numpy as np

# Hàm thay đổi độ tương phản
def change_contrast(image, factor=1.5):
    mean = np.mean(image)
    return (image - mean) * factor + mean

# Áp dụng thay đổi độ tương phản
contrasted_clip = clip.fl_image(lambda frame: change_contrast(frame, 1.5))

# Lưu kết quả
contrasted_clip.write_videofile("contrasted_video.mp4")

Thay đổi độ tương phản bằng phương thức lum_contrast()

Tăng độ tương phản video

Python

# Tăng độ tương phản
high_contrast_video = lum_contrast(video, contrast=1.5)  # Tăng độ tương phản thêm 50%

# Lưu kết quả
high_contrast_video.write_videofile("high_contrast_video.mp4")

Ở đây:

  • contrast = 1.5 tăng độ tương phản thêm 50%. Bạn có thể chỉ định bất kỳ giá trị lớn hơn 1 để tăng độ tương phản.

Giảm độ tương phản video

Python

# Giảm độ tương phản
low_contrast_video = lum_contrast(video, contrast=0.5)  # Giảm độ tương phản thêm 50%

# Lưu kết quả
low_contrast_video.write_videofile("low_contrast_video.mp4")

Ở đây:

  • contrast = 0.5 giảm độ tương phản thêm 50%. Các giá trị nhỏ hơn 1 sẽ làm giảm độ tương phản, khiến hình ảnh nhìn nhạt hơn.

4. Thay đổi các thuộc tính màu sắc của video

MoviePy cung cấp các tính năng để thay đổi gam màu, chuyển đổi hình ảnh sang chế độ đen trắng và các hiệu ứng màu khác.

Chỉnh sửa màu sắc bằng phương thức fl_image()

Để chỉnh sửa màu sắc, chúng ta có thể sử dụng hàm rgb_color, cho phép chuyển đổi bảng màu của video.

Python

def adjust_color(image, factor=0.8):
    return image * np.array([1, factor, factor])  # giảm kênh xanh lá và xanh dương

# Áp dụng chỉnh sửa màu sắc
color_corrected_clip = clip.fl_image(lambda frame: adjust_color(frame, 0.8))

# Lưu kết quả
color_corrected_clip.write_videofile("color_corrected_video.mp4")

Chỉnh sửa màu sắc với moviepy.video.fx.all

MoviePy cung cấp các tính năng để thay đổi gam màu, chuyển đổi hình ảnh sang chế độ đen trắng và các hiệu ứng màu khác.

Chuyển đổi video sang chế độ đen trắng

Để tạo video đen trắng, bạn có thể sử dụng phương thức fx với hàm blackwhite.

Python

from moviepy.video.fx.all import blackwhite

# Chuyển đổi video sang đen trắng
bw_video = blackwhite(video)

# Lưu kết quả
bw_video.write_videofile("black_and_white_video.mp4")

Ở đây:

  • blackwhite(video) chuyển đổi video sang thang độ xám.

Đảo màu video

MoviePy cho phép tạo hiệu ứng đảo màu, có thể sử dụng để tạo hiệu ứng kịch tính hoặc nghệ thuật.

Python

from moviepy.video.fx.all import invert_colors

# Đảo màu video
inverted_video = invert_colors(video)

# Lưu kết quả
inverted_video.write_videofile("inverted_video.mp4")

Ở đây:

  • invert_colors(video) đảo ngược tất cả màu trong video, tạo hiệu ứng hình ảnh âm bản.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION