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