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