使用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的資料夾,並且影片中的幀儲存在該資料夾中。

廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP