調整影片亮度、對比、顏色
這篇文章會介紹使用 Python 的 moviepy 第三方函式庫,讀取影片並調整影片的亮度、對比和顏色 ( 黑白影片、負片效果...等 )。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
安裝 moviepy
輸入下列指令安裝 moviepy,根據個人環境使用 pip 或 pip3。
!pip install moviepy
由於影片轉檔會使用 ffmpeg,因此也要安裝 ffmpeg ( 影片存檔常見錯誤「TypeError: must be real number, not NoneType」往往都是 ffmpeg 沒有安裝導致 ),根據個人環境使用 pip 或 pip3,Anaconda Jupyter 可以使用 conda install。
!pip install ffmpeg
調整影片亮度與對比
載入 moviepy.video.fx.all 的特效模組,使用 moviepy 讀取影片後,使用 lum_contrast方法,就能調整影片的亮度和對比 ( 更多特效方法參考:moviepy.video.fx (vfx) ),lum_contrast 有下列幾個參數:
參數 | 說明 |
---|---|
clip | 要套用效果的影片。 |
lum | 亮度,預設 0,範圍 -255~255,數字越大越亮。 |
contrast | 對比度,預設 0,正常範圍 -1~3 ( 最大約 3~5,超過後產生的顏色會固定 ),若小於 -1 顏色會反轉。 |
contrast_thr | 對比臨界值,預設 127,通常不需做設定。 |
下方的程式碼執行後,會四個亮度對比不同的影片。
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
from moviepy.video.fx.all import *
video = VideoFileClip("oxxostudio.mp4")
output_1 = lum_contrast(video, lum=-50, contrast=0) # 亮度減少 50
output_2 = lum_contrast(video, lum=150, contrast=0) # 亮度增加 150
output_3 = lum_contrast(video, lum=0, contrast=-0.5) # 對比減少 0.5
output_4 = lum_contrast(video, lum=0, contrast=2) # 對比增加 2
output_1.write_videofile("output_1.mp4",temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
output_2.write_videofile("output_2.mp4",temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
output_3.write_videofile("output_3.mp4",temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
output_4.write_videofile("output_4.mp4",temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
print('ok')
調整影片顏色
載入 moviepy.video.fx.all 的特效模組,使用 moviepy 讀取影片後,有下列幾種方法可以調整影片的顏色 ( 更多特效方法參考:moviepy.video.fx (vfx) ):
方法 | 說明 |
---|---|
blackwhite | 轉換成黑白影片。 |
invert_colors | 反轉影片顏色 ( 負片效果 )。 |
gamma_corr | 調整影片 gamma 值,包含一個參數,預設 0。 |
colorx | 調整影片色彩,包含一個參數,預設 0,範圍約 -1~2。 |
import os
os.chdir('/content/drive/MyDrive/Colab Notebooks') # 使用 Colab 要換路徑使用
from moviepy.editor import *
from moviepy.video.fx.all import *
video = VideoFileClip("oxxostudio.mp4")
output_1 = colorx(video, 1.5) # 調整顏色
output_2 = gamma_corr(video, 1) # 調整 gamma 值
output_3 = blackwhite(video) # 黑白影片
output_4 = invert_colors(video) # 負片效果
output_1.write_videofile("output_1.mp4",temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
output_2.write_videofile("output_2.mp4",temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
output_3.write_videofile("output_3.mp4",temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
output_4.write_videofile("output_4.mp4",temp_audiofile="temp-audio.m4a", remove_temp=True, codec="libx264", audio_codec="aac")
print('ok')
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~