使用Python和OpenCV提取影片幀的程式?


OpenCV(開源計算機視覺)是一個開源的程式設計庫,主要用於機器學習和計算機視覺。它提供了用於計算機視覺應用的通用基礎設施,並加速了機器學習在商業產品中的應用。

它擁有超過2500種針對計算機視覺和機器學習的最佳化演算法,包括經典演算法和最先進的演算法。如此眾多的演算法使得該庫能夠用於多種用途,包括人臉檢測和識別、物體識別、影片中的人類行為分類、相機運動跟蹤、將影像拼接在一起以生成整個場景的高解析度影像等等。

在本練習中,我們將實現逐幀的影片處理。輸入影片可以是即時攝像頭影片或儲存在本地計算機中的影片。我們將從儲存在本地計算機中的影片中建立幀,然後將這些幀儲存在本地驅動器中。

由於OpenCV不是Python的標準庫,因此需要安裝它。我們可以使用pip非常輕鬆地安裝它。

pip install opencv-python
Collecting opencv-python
Downloading https://files.pythonhosted.org/packages/49/4b/ad55a2e2c309fb698e1283e687129e0892c7864de9a4424c4ff01ba0a3bb/opencv_python-4.0.0.21-cp36-cp36m-win32.whl (22.1MB)
100% |████████████████████████████████| 22.1MB 141kB/s
Requirement already satisfied: numpy>=1.11.3 in c:\python\python361\lib\site-packages (from opencv-python) (1.13.0)
Installing collected packages: opencv-python
Successfully installed opencv-python-4.0.0.21

我的影片檔案儲存在f盤中,我想將其轉換為幀(縮圖),然後將這些幀儲存到我選擇的位置。

程式碼:讀取影片檔案並從中提取幀的程式。

#Import libraries
import cv2
import os
#Function to extract frames
def extractFrames(pathIn, pathOut):
   #directory path, where my video images will be stored
   os.mkdir(r'c:/users/rajesh/Desktop/data')
   #Capture vidoe from video file
   cap = cv2.VideoCapture(pathIn)
#Counter Variable
count = 0

while (cap.isOpened()):
   # Capture frame-by-frame
   ret, frame = cap.read()
   if ret == True:
      print('Read %d frame: ' % count, ret)
      # save frame as JPEG file
      cv2.imwrite(os.path.join(pathOut, "frame{:d}.jpg".format(count)), frame)
      count += 1
   else:
      break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
def main():
   extractFrames(r'f:/I Miss You.mp4' , 'data')
if __name__=="__main__":
   main()

輸出

我們可以看到,在我的桌面上(目標路徑)建立了一個名為data的資料夾,並且影片中的幀儲存在該資料夾中。

更新於: 2019年7月30日

305 次檢視

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.