1. 程式人生 > 其它 >【騷操作】Python 教你無損提取視訊中的美女圖片

【騷操作】Python 教你無損提取視訊中的美女圖片

前言

人類都是視覺動物,不管是男生還是女生看到漂亮的小姐姐、小哥哥就想截圖儲存下來。可是截圖會對畫質會產生損耗,擷取的

畫面不規整,畫素不高等問題。

用 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\\✿溫柔旗袍中國風✿

 

結束
程式碼和教程給大家放在上面,喜歡的都可以動手操作起來。教程很簡單,非常適合大家拿來練手。

喜歡的點贊收藏,不懂的評論留言,看見就回。