Python使用OpenCV从视频中按秒提取图片

江屿
江屿
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍如何利用Python和OpenCV库从视频中按秒提取图片。通过获取视频帧率,设定提取间隔,实现每秒保存一帧图像的功能。适用于行人检测等需要视频转图片数据集的场景。

视频转图片需求背景

在进行行人检测项目时,通常需要将视频数据转换为图片数据集。为了便于处理,希望从视频中按秒提取图片。

  • 使用的编程语言为Python。
  • 需要安装cv2和numpy库(请自行安装)。

OpenCV基础帧提取实现

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)
 success, frame = videoCapture.read()

按秒提取图片的逻辑与方法

若需按秒提取,只需知道视频每秒的帧数,并在上述代码基础上每隔相应帧数提取一次即可。这需要先查看视频的帧率。通常可通过播放器右键查看视频属性获取帧率。例如,若视频帧率为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 相关产品和应用

全部下载

专题列表