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()
將該函數應用於視頻中的每一幀,創造出紅色增強效果。
問題與解決
乍看之下,使視頻色彩鮮明似乎很簡單。但就像程式設計一樣,總是會有些細節需要注意。例如,過高的亮度可能會"吞噬"亮部的細節,而過強的對比可能會讓視頻看起來有點"雜亂"。建議逐步應用這些更改,並在視頻的小片段上檢查結果。
此外,不要忘記性能問題。每一幀的改變都是需要資源的過程。在試驗效果時,明智地選擇不過長的視頻片段。
GO TO FULL VERSION