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

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

本文介绍如何利用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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。