介绍
欢迎来到这个关于如何使用 OpenCV-Python 处理视频的实验!OpenCV(开源计算机视觉库)是一个强大的库,专为图像处理、机器学习和计算机视觉应用而设计。在这个实验中,我们将重点介绍如何在 OpenCV-Python 中处理视频。
欢迎来到这个关于如何使用 OpenCV-Python 处理视频的实验!OpenCV(开源计算机视觉库)是一个强大的库,专为图像处理、机器学习和计算机视觉应用而设计。在这个实验中,我们将重点介绍如何在 OpenCV-Python 中处理视频。
要捕获视频,你需要创建一个 VideoCapture
对象。以下是一个读取视频并将每一帧保存到 frame
文件夹的示例:
视频路径为 /home/labex/project/video.mp4
文件路径为 /home/labex/project/read_video.py
打开 read_video.py
文件,然后输入以下代码。
import cv2
import os
## 检查 'frame' 文件夹是否存在。如果不存在则创建它。
folder = os.path.exists('frame')
if not folder:
os.makedirs('frame')
print('new folder...')
print('OK')
else:
print('There is this folder!')
## 帧编号
number = 0
## 创建一个 VideoCapture 对象
cap = cv2.VideoCapture('video.mp4')
while True:
## 从视频中读取一帧
ret, frame = cap.read()
## 帧编号增加
number = number + 1
if ret:
## 保存帧
cv2.imwrite(f"./frame/save{number}.jpg", frame)
## 退出循环
else:
break
print('每一帧已保存到 frame 文件夹')
print('视频读取成功!')
## 释放 VideoCapture 对象
cap.release()
在这个示例中,我们通过传递视频文件的路径创建了一个 VideoCapture
对象。然后,我们使用 while
循环通过 read()
方法读取视频的每一帧。如果帧读取成功,我们使用 imwrite()
方法保存该帧。最后,我们释放 VideoCapture
对象。
你可以在终端中运行以下命令来执行。
python /home/labex/project/read_video.py
或者你可以直接点击右上角的按钮 来执行。
之后,等待终端输出 "视频读取成功!",你将在 frame
文件夹中看到每一帧的图片。
要写入并保存视频,你需要创建一个 VideoWriter
对象。以下是一个如何写入并保存视频的示例:
视频路径为 /home/labex/project/video.mp4
文件路径为 /home/labex/project/write_video.py
打开 write_video.py
文件,然后输入以下代码。
import cv2
## 创建一个 VideoCapture 对象
cap = cv2.VideoCapture('video.mp4')
## 获取视频帧的尺寸和帧率
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(cap.get(cv2.CAP_PROP_FPS))
## 创建一个 VideoWriter 对象
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height))
while True:
## 从视频中读取一帧
ret, frame = cap.read()
if ret:
## 处理帧
## ...
## 将处理后的帧写入输出视频
out.write(frame)
else:
break
print('视频保存成功!')
## 释放 VideoCapture 和 VideoWriter 对象
cap.release()
out.release()
在这个示例中,我们通过传递视频文件的路径创建了一个 VideoCapture
对象。然后,我们使用 get()
方法获取视频帧的尺寸和帧率。接下来,我们通过传递输出文件名、fourcc 编码、帧率和帧尺寸创建了一个 VideoWriter
对象。fourcc 编码是一个四字节编码,用于指定视频编解码器。在这个示例中,我们使用了 XVID 编解码器。
然后,我们使用 while
循环通过 read()
方法读取视频的每一帧。如果帧读取成功,我们对其进行处理(例如,应用滤镜),并使用 VideoWriter
对象的 write()
方法将其写入输出视频。最后,我们释放 VideoCapture
和 VideoWriter
对象。
你可以在终端中运行以下命令来执行。
python /home/labex/project/write_video.py
或者你可以直接点击右上角的按钮 来执行。
之后,等待终端输出 "视频保存成功!",你将在项目文件夹中看到一个名为 output.avi
的输出视频。然而,当前环境不支持查看视频文件。你需要将文件下载到本地,如下所示,然后使用视频播放器查看。
恭喜!你现在已经学会了如何使用 OpenCV-Python 读取、显示、写入和保存视频。掌握了这些基本技能后,你可以开始探索更高级的计算机视觉技术和应用。
你可以自由扩展本教程的内容,尝试不同的视频格式、对帧应用滤镜,或者实验对象跟踪和检测。可能性是无限的!