使用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.