前言
人類都是視覺動物,不管是男生還是女生看到漂亮的小姐姐、小哥哥就想截圖保存下來,可是截圖會對畫質會產生損耗,截取的
畫面不規整,像素不高等問題,

用 Python 寫一個逐幀無損保存視頻畫面的小腳本大致可以分為三個步驟:
1.在 cmd 中使用 you-get 下載視頻
2.OpenCV 讀取并處理視頻
3.將視頻畫面保存為圖片

安裝模塊
1.you-get 模塊用于下載視頻,它需要 ffmpeg 模塊配合使用,
pip3 install you-get
2.windows 的 ffmpeg 的下載地址是
[https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-essentials.7z],解壓后將 bin 檔案加入環境變數,

3.python-OpenCV 模塊用來讀取視頻幀,并保存成圖片,

pip3 install opencv-python
you-get
you-get 是一個開源的視頻下載軟體,支持 80+ 網站視頻的下載,只需要一行代碼就可以了,
在 cmd 中運行下面的命令下載視頻:
you-get -o 下載后保存檔案的目錄 視頻的 url 地址

如果報 ‘you-get’ 不是內部或外部命令,也不是可運行的程式 問題,可以運行
pip show you-get
將 Location 的值的 site-packages 改成 Scripts 加入到環境變數,如:c:\users\xxx\appdata\roaming\python\python39\site-
packages 改成c:\users\xxx\appdata\roaming\python\python39\Scripts,
OpenCV
磨刀不誤砍柴工, 在開發之前先來認識一下 OpenCV,它的全稱是 Open Source Computer Vision Library,是一個可以跨平臺的
計算機視覺庫 ,OpenCV-Python 是 OpenCV 的 Python API,
它集合了 C++ 和 Python 的最優特征,用于支持 Python 解決計算機視覺的問題,OpenCV 可以用于人機互動、影像分割、人臉
識別等等領域,

在處理視頻按幀保存圖片的時候需要用到以下幾個函式:
1.cap = cv2.VideoCapture("視頻地址"):引數是視頻的地址表示讀取一個視頻檔案,
2.cap = cv2.VideoCapture(0):引數是 0 表示打開電腦上的攝像頭,

3.cap.isOpened():
回傳 true 和 false 表示是否成功,
4.success, frame = cap.read(): 這個函式就是 OpenCV 讀取視頻的下一幀,第一個回傳值表示是否讀取成功,第二個回傳值就是回傳讀取到的視頻幀,
5.cv2.imencode():將上面的視頻幀按照圖片編碼后快取到記憶體中,呼叫 tofile() 函式保存成檔案,
話不多說,用上面的函式寫一個截取視頻畫面的 Python 程式
Python學習交流Q群:906715085#### import cv2 import os image_base_path = "D:\\video\\images\\"; def get_images(video_path): frame_times = -1; fileName = video_path.split("\\")[-1:][0].split('.')[0] image_out_path = image_base_path + fileName if not os.path.exists(image_out_path): os.makedirs(image_out_path) cap = cv2.VideoCapture(video_path) while cap.isOpened(): frame_times = frame_times + 1 success, frame = cap.read() if not success: break; cv2.imencode('.jpg', frame)[1].tofile(image_out_path + "\\" + str(frame_times) + ".jpg") if __name__ == '__main__': get_images('D:\\vedio\\?溫柔旗袍中國風?

結束
代碼和教程給大家放在上面,喜歡的都可以動手操作起來,教程很簡單,非常適合大家拿來練手,
喜歡的點贊收藏,不懂的評論留言,看見就回,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/458213.html
標籤:Python
