1. Візуальні ефекти
Вступ до візуальних ефектів
Сьогодні ми навчимося не лише змінювати яскравість і контраст, а й надавати вашій творчості особливий стиль, не гірший за голлівудські блокбастери. Або просто зробити ваше відео більш привабливим, якщо воно зняте на старенький телефон.
Коли мова заходить про обробку відео, знання як застосовувати візуальні ефекти — це ваш секретний інгредієнт для створення контенту, який привертає увагу. Візуальні ефекти допоможуть зробити відео яскравішим, підкреслити важливі деталі чи перетворити загальний стиль кліпу.
Основи зміни яскравості, контрасту та кольору
Перш ніж перейти до практики, давайте освіжимо наше розуміння того, що таке яскравість, контраст і колір у контексті відео.
- Яскравість — це загальна світлість або темність зображення. Збільшення яскравості робить відео більш світлим, а зменшення — темнішим.
- Контраст — це різниця між найсвітлішим і найтемнішим ділянками відео. Високий контраст робить відео більш насиченим, низький — більш пласким.
- Колірокорекція — це процес зміни кольорового балансу для покращення якості відео.
2. Зміна яскравості відео
Тепер давайте заглибимося в код і подивимось, як можна застосувати ці ефекти за допомогою MoviePy.
Зміна яскравості відео за допомогою методу fl_image()
Змінити яскравість відео можна за допомогою методу fl_image, який дозволяє застосовувати користувацькі функції до всіх кадрів відео. Якщо ви хочете збільшити яскравість на 20%, вкажіть множник 1.2
from moviepy.editor import VideoFileClip
# Функція для зміни яскравості
def change_brightness(image, factor=1.2):
return image * factor
# Відкриття відеофайлу
clip = VideoFileClip("video.mp4")
# Застосування зміни яскравості
brightened_clip = clip.fl_image(lambda frame: change_brightness(frame, 1.2))
# Збереження результату
brightened_clip.write_videofile("brightened_video.mp4")
Зміна яскравості відео за допомогою moviepy.video.fx.all
Також зміну яскравості відео можна зробити за допомогою ефекту lum_contrast, який дозволяє збільшувати або зменшувати яскравість кліпу.
Збільшення яскравості відео
from moviepy.editor import VideoFileClip
from moviepy.video.fx.all import lum_contrast
# Завантаження відео
video = VideoFileClip("sample_video.mp4")
# Застосування ефекту для збільшення яскравості
bright_video = lum_contrast(video, lum=30) # Збільшення яскравості на 30 одиниць
# Збереження результату
bright_video.write_videofile("bright_video.mp4")
У цьому прикладі:
lum_contrast(video, lum=30)збільшує яскравість відео на 30 одиниць. Значення яскравості може бути як позитивним (для збільшення яскравості), так і негативним (для затемнення).
Зменшення яскравості відео
# Застосування ефекту для зменшення яскравості
dark_video = lum_contrast(video, lum=-30) # Зменшення яскравості на 30 одиниць
# Збереження результату
dark_video.write_videofile("dark_video.mp4")
3. Зміна контрасту відео
Контрастність відео відповідає за яскравість і насиченість світлих і темних ділянок. Підвищення контрасту робить світлі ділянки яскравішими, а темні — темнішими, натомість зниження контрасту зменшує різницю між світлими і темними ділянками.
Зміна контрасту за допомогою методу fl_image()
Контраст можна змінювати аналогічним чином з використанням функції перетворення зображення. Ось як це можна зробити:
import numpy as np
# Функція для зміни контрасту
def change_contrast(image, factor=1.5):
mean = np.mean(image)
return (image - mean) * factor + mean
# Застосування зміни контрасту
contrasted_clip = clip.fl_image(lambda frame: change_contrast(frame, 1.5))
# Збереження результату
contrasted_clip.write_videofile("contrasted_video.mp4")
Зміна контрасту за допомогою методу lum_contrast()
Підвищення контрасту відео
# Підвищення контрасту
high_contrast_video = lum_contrast(video, contrast=1.5) # Збільшення контрасту на 50%
# Збереження результату
high_contrast_video.write_videofile("high_contrast_video.mp4")
Тут:
contrast = 1.5збільшує контраст на 50%. Можна вказати будь-яке значення більше 1 для збільшення контрасту.
Зниження контрасту відео
# Зниження контрасту
low_contrast_video = lum_contrast(video, contrast=0.5) # Зменшення контрасту на 50%
# Збереження результату
low_contrast_video.write_videofile("low_contrast_video.mp4")
Тут:
contrast = 0.5зменшує контраст на 50%. Значення менше 1 знижують контраст, що робить зображення менш насиченим.
4. Зміна кольорових характеристик відео
MoviePy надає можливості для зміни кольорової гами, перетворення зображення в чорно-білий режим та інших кольорових ефектів.
Колірокорекція за допомогою методу fl_image()
Для колірокорекції ми можемо скористатися функцією rgb_color, яка дозволяє перетворити кольорову палітру відео.
def adjust_color(image, factor=0.8):
return image * np.array([1, factor, factor]) # зменшення зеленого та синього каналів
# Застосування кольорокорекції
color_corrected_clip = clip.fl_image(lambda frame: adjust_color(frame, 0.8))
# Збереження результату
color_corrected_clip.write_videofile("color_corrected_video.mp4")
Кольорокорекція за допомогою moviepy.video.fx.all
MoviePy надає можливості для зміни кольорової гами, перетворення зображення в чорно-білий режим та інших кольорових ефектів.
Перетворення відео в чорно-білий режим
Для створення чорно-білого відео можна використати метод fx з функцією blackwhite.
from moviepy.video.fx.all import blackwhite
# Перетворення відео в чорно-біле
bw_video = blackwhite(video)
# Збереження результату
bw_video.write_videofile("black_and_white_video.mp4")
Тут:
blackwhite(video)перетворює відео в відтінки сірого.
Інверсія кольорів відео
MoviePy дозволяє створити ефект інверсії кольорів, який може використовуватися для створення драматичних або художніх ефектів.
from moviepy.video.fx.all import invert_colors
# Інверсія кольорів відео
inverted_video = invert_colors(video)
# Збереження результату
inverted_video.write_videofile("inverted_video.mp4")
Тут:
invert_colors(video)інвертує всі кольори у відео, створюючи ефект негативного зображення.
5. Застосування фільтрів
Застосування кольорових фільтрів для створення ефекту сепії
Для створення ефекту сепії, який додає відео теплий коричневий відтінок, можна накласти фільтр на відео. У MoviePy це можна зробити, вручну змінюючи колірні канали.
Створення ефекту сепії
from moviepy.video.fx.all import colorx
# Застосування ефекту сепії (зменшення синього та зеленого каналу)
sepia_video = colorx(video, 0.9)
# Збереження результату
sepia_video.write_videofile("sepia_video.mp4")
У цьому прикладі:
colorx(video, 0.9)зменшує насиченість кольорів. Ви також можете комбінувати цей ефект з іншими, щоб отримати теплі відтінки.
Використання власних фільтрів
Якщо вам потрібно створити унікальний кольоровий ефект, MoviePy дозволяє писати власні фільтри. Це робиться шляхом створення функції, яка буде застосовуватись до кожного кадру відео.
Створення власного фільтра для посилення червоного каналу
import numpy as np
# Власна функція для збільшення червоного каналу
def enhance_red(image):
image[:, :, 0] = np.clip(image[:, :, 0] * 1.5, 0, 255) # Посилення червоного каналу
return image
# Застосування власного фільтра
red_video = video.fl_image(enhance_red)
# Збереження результату
red_video.write_videofile("enhanced_red_video.mp4")
У цьому прикладі:
- Функція
enhance_red(image)посилює червоний канал зображення, роблячи його більш насиченим. fl_image()застосовує цю функцію до кожного кадру відео, створюючи ефект збільшення червоного каналу.
Проблеми та рішення
На перший погляд здається, що зробити відео яскравішим — це просто. Однак, як і в програмуванні, завжди є нюанси. Наприклад, занадто висока яскравість може "з'їсти" деталі у світлих ділянках, а надмірний контраст може зробити відео візуально "шумним". Рекомендується застосовувати ці зміни поступово та перевіряти результат на невеликих фрагментах відео.
Крім того, не забувайте про продуктивність. Зміна кожного кадру — це процес, що вимагає ресурсів. Розумно стежити за тим, щоб відео не було надто довгим, коли ви експериментуєте з ефектами.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ