? ? 老猿Python博文目錄:https://blog.csdn.net/LaoYuanPython ?
一、引言
最近看到好幾篇類似“n行Python代碼…”的博文,看起來還挺不錯,簡潔、實用,傳播了知識、帶來了閱讀量,撩動了老猿的心,決定跟風一把,推一個“n行Python代碼系列”文章,
對于視頻中的畫面,有時出于特效處理等特殊要求希望進行類似照片負片的效果,
負片(Negative Film)是經曝光和顯影加工后得到的影像,其明暗與被攝體相反,其色彩則為被攝體的補色,它需經印放在照片上才還原為正像,拿黑白的片子來說,在負片的膠片上人的頭發是白的,實際上白色的衣服在膠片上是黑色的;彩色的膠片,膠片上的顏色與實際的景物顏色正好是互補的,如:實際是紅色的衣服在膠片上是青色的,負片不論是黑白或彩色均是攝影最常用的膠片,我們平常所說的用來沖洗照片的底片就是負片,
本文介紹通過Python+Moviepy兩行代碼實作將視頻進行視頻反色處理達到每幀畫面都是原畫面的負片效果,更多“n行Python代碼系列”文章請參考免費專欄《n行Python代碼系列》,
二、實作視頻反色處理的案例
老猿手頭有個從抖音下的風景視頻,其對應原視頻內容如下:

為了實作視頻反色處理,示例代碼如下:
from moviepy.editor import *
clip = VideoFileClip(r"F:\video\scenery.mp4")
clipInvert_colors = clip.fx(vfx.invert_colors)
clipInvert_colors.write_videofile (r"F:\video\scenery_invert_colors.mp4")
上述四行代碼實作Moviepy模塊的加載、然后讀入視頻檔案、對視頻進行反色處理、輸出反色后視頻到結果視頻檔案,以上四行代碼也可以精簡為如下兩行:
from moviepy.editor import *
VideoFileClip(r"F:\video\scenery.mp4").fx(vfx.invert_colors).write_videofile (r"F:\video\scenery_invert_colors.mp4")
輸出的反色視頻如下:

可以看到反轉后的視頻有種魔幻的感覺,
三、背景知識
3.1、moviepy簡介
要實作視頻剪輯,老猿使用了moviepy庫,MoviePy是一個用于視頻編輯的Python模塊,可用于進行視頻的基本操作(如剪切、連接、標題插入)、視頻合成(也稱非線性編輯)、視頻處理或創建高級效果,它可以讀寫最常見的視頻格式,包括GIF,MoviePy能處理的視頻是ffmpeg格式的,老猿理解支持的檔案型別至少包括:*.mp4 *.wmv *.rm *.avi *.flv *.webm *.wav *rmvb,
MoviePy安裝非常簡單,使用pip安裝時,請將站點指向國內的鏡像站點,否則下載很慢或者下載不下來,老猿使用清華的鏡像,指令是:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple moviepy
3.2、代碼使用相關函式介紹
上述代碼涉及到的相關函式包括VideoFileClip、fx、invert_colors、write_videofile,其中:
- VideoFileClip實際上是一個類,用于從視頻檔案裝載視頻到記憶體
- fx函式是Moviepy剪輯基類Clip的方法,fx方法是用于執行引數指定的函式,并回傳該引數對應函式的執行結果
- invert_colors將像素對應顏色進行反轉,具體反轉方式為,對于標準剪輯,采用255減各RGB的值,對于遮罩剪輯,采用1.0減原值,顏色反轉又稱為負片轉換
- write_videofile用于將剪輯內容輸出到視頻檔案
四、小結
本文介紹了使用Python+Moviepy 兩行代碼實作視頻顏色反轉的方法,視頻顏色反轉類似相片沖印中的負片處理,
更多相關moviepy知識的介紹請參考《https://blog.csdn.net/LaoYuanPython/article/details/108184832 Python音視頻剪輯庫MoviePy1.0.3中文教程導覽及可執行工具下載》的導覽式介紹,
寫博不易,敬請支持:
如果閱讀本文于您有所獲,敬請點贊、評論、收藏,謝謝大家的支持!
關于老猿的付費專欄
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_9607725.html 使用PyQt開發圖形界面Python應用》專門介紹基于Python的PyQt圖形界面開發基礎教程,對應文章目錄為《 https://blog.csdn.net/LaoYuanPython/article/details/107580932 使用PyQt開發圖形界面Python應用專欄目錄》;
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10232926.html moviepy音視頻開發專欄 )詳細介紹moviepy音視頻剪輯合成處理的類相關方法及使用相關方法進行相關剪輯合成場景的處理,對應文章目錄為《https://blog.csdn.net/LaoYuanPython/article/details/107574583 moviepy音視頻開發專欄文章目錄》;
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10581071.html OpenCV-Python初學者疑難問題集》為《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python圖形影像處理 》的伴生專欄,是筆者對OpenCV-Python圖形影像處理學習中遇到的一些問題個人感悟的整合,相關資料基本上都是老猿反復研究的成果,有助于OpenCV-Python初學者比較深入地理解OpenCV,對應文章目錄為《https://blog.csdn.net/LaoYuanPython/article/details/109713407 OpenCV-Python初學者疑難問題集專欄目錄 》
- 付費專欄《https://blog.csdn.net/laoyuanpython/category_10762553.html Python爬蟲入門 》站在一個互聯網前端開發小白的角度介紹爬蟲開發應知應會內容,包括爬蟲入門的基礎知識,以及爬取CSDN文章資訊、博主資訊、給文章點贊、評論等實戰內容,
前兩個專欄都適合有一定Python基礎但無相關知識的小白讀者學習,第三個專欄請大家結合《https://blog.csdn.net/laoyuanpython/category_9979286.html OpenCV-Python圖形影像處理 》的學習使用,
對于缺乏Python基礎的同仁,可以通過老猿的免費專欄《https://blog.csdn.net/laoyuanpython/category_9831699.html 專欄:Python基礎教程目錄)從零開始學習Python,
如果有興趣也愿意支持老猿的讀者,歡迎購買付費專欄,
如果對文章內容存在疑問,可以在博客評論區留言,或關注:老猿Python 微信公號發訊息咨詢,


跟老猿學Python!
? ? 前往老猿Python博文目錄 https://blog.csdn.net/LaoYuanPython ?
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/278408.html
標籤:AI
