python 保存图片_用Python从视频中提取每一帧的图片

  • Post author:
  • Post category:python


OpenCV的带有许多强大的视频编辑功能。在当前情况下, 可以使用OpenCV完成诸如图像扫描, 面部识别之类的技术。

图像分析是计算机视觉领域中非常普遍的领域。它是从视频或图像中提取有意义的信息。 OpenCV库可用于对视频执行多项操作。

所需模块:

import cv2
import os
使用的函数:

VideoCapture(File_path): 读取视频(.mp4格式)

read() : 根据调用的对象类型读取数据

imwrite(filename, img[, params]): 将图像保存到指定的文件。

 下面是实现:

# 导入所有必要的库
import cv2
import os
  
# 从指定的路径读取视频
cam = cv2.VideoCapture( "C:\\Users\\Admin\\PycharmProjects\\project_1\\openCV.mp4" )
  
try :
      
     # 创建名为data的文件夹
     if not os.path.exists( 'data' ):
         os.makedirs( 'data' )
  
# 如果未创建,则引发错误
except OSError:
     print ( 'Error: Creating directory of data' )
  
# frame
currentframe = 0
  
while ( True ):
      
     # reading from frame
     ret, frame = cam.read()
  
     if ret:
         # 如果视频仍然存在,继续创建图像
         name = './data/frame' + str (currentframe) + '.jpg'
         print ( 'Creating...' + name)
  
         # 写入提取的图像
         cv2.imwrite(name, frame)
  
         # 增加计数器,以便显示创建了多少帧
         currentframe + = 1
     else :
         break
  
# 一旦完成释放所有的空间和窗口
cam.release()
cv2.destroyAllWindows()

大家应该都有这样的情况:在看到某些视频的画面时感觉美如画,想截取下来却又烦于截图的繁琐,现在我就教大家使用Python提取视频中每一帧的画面,让大家不错过每一个精彩的瞬间!

•语言:Python
•所需要的库:cv2,numpy (自行安装)
opencv中提供了读取视频每帧图片的函数,下面的代码可以将视频的每帧图片提取出来。注:我的视频名字叫 2.mp4 ,提取图片保存目录 需要自己建一个名字叫 output 的文件夹。

# 导入所需要的库
import cv2
import numpy as np
  
# 定义保存图片函数
# image:要保存的图片名字
# addr;图片地址与相片名字的前部分
# num: 相片,名字的后缀。int 类型
def save_image(image,addr,num):
  address = addr + str(num)+ '.jpg'
  cv2.imwrite(address,image)
  
# 读取视频文件
videoCapture = cv2.VideoCapture("2.mp4")
# 通过摄像头的方式
# videoCapture=cv2.VideoCapture(1)
  
#读帧
success, frame = videoCapture.read()
i = 0
while success :
  i = i + 1
  save_image(frame,'./output/image',m)
  if success:
    print('save image:',i)以上就是如何用Python从视频中提取每一秒的画面的方法,希望能帮助到大家!
当我们想按秒提取时,只要我们能知道视频每秒有多少帧,然后在上面的代码基础上每隔那么多帧提取一次就行了,这就需要查看视频的帧率。一般情况下随便用一个播放器打开视频后右键查看其属性就可以看到帧率。现在我的视频帧率为12 ,每隔12帧提取一次就可以得到每秒的图片。代码如下:

# 导入所需要的库
import cv2
import numpy as np
  
# 定义保存图片函数
# image:要保存的图片名字
# addr;图片地址与相片名字的前部分
# num: 相片,名字的后缀。int 类型
def save_image(image,addr,num):
  address = addr + str(num)+ '.jpg'
  cv2.imwrite(address,image)
  
# 读取视频文件
videoCapture = cv2.VideoCapture("2.mp4")
# 通过摄像头的方式
# videoCapture=cv2.VideoCapture(1)
  
#读帧
success, frame = videoCapture.read()
i = 0
timeF = 12
j=0
while success :
  i = i + 1
  if (i % timeF == 0):
    j = j + 1
    save_image(frame,'./output/image',j)
    print('save image:',i)
  success, frame = videoCapture.read()
以上就是如何用Python从视频中提取每一秒的画面的方法,希望能帮助到大家!
import cv2
#打开笔记本的内置摄像头
cap = cv2.VideoCapture(0)
i = 0
#也可写成while True
while(1):
    """
    ret:True或者False,代表有没有读取到图片
    frame:表示截取到一帧的图片
    """
    ret,frame = cap.read()
    # 展示图片
    cv2.imshow('capture',frame)
    # 保存图片
    cv2.imwrite(r"D:\image\\"+ str(i) + ".jpg",frame)
    i = i + 1
    """
       cv2.waitKey(1):waitKey()函数功能是不断刷新图像,返回值为当前键盘的值
       OxFF:是一个位掩码,一旦使用了掩码,就可以检查它是否是相应的值
       ord('q'):返回q对应的unicode码对应的值(113)
    """
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
#释放对象和销毁窗口
cap.release()
cv2.destroyAllWindows()



版权声明:本文为qq_15821487原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。