opencv视频文件的读写

2023-12-23 06:30:51

目录

opencv视频文件的读写

OpenCV调用电脑摄像头


?

opencv视频文件的读写


在OpenCV中,你可以使用 cv2.VideoCapture 类 来读取视频文件,使用 cv2.VideoWriter 类来写入视频文件。

下面是一个简单的例子,演示如何使用OpenCV读取视频文件、处理每一帧,以及将处理后的帧写入新的视频文件
?

import cv2

# 打开视频文件
input_video_path = r'D:\untitled13\9.2\.vscode\demo01.py\input_video.mp4'
cap = cv2.VideoCapture(input_video_path)

# 检查视频是否成功打开
if not cap.isOpened():
? ? print("Error: Could not open video.")
? ? exit()

# 获取视频的帧率、宽度和高度
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 定义输出视频文件的路径和编解码器
output_video_path = 'output_video.mp4'
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video_path, fourcc, fps, (width, height))

# 处理每一帧
while True:
? ? ret, frame = cap.read()

? ? # 如果视频读取结束,退出循环
? ? if not ret:
? ? ? ? break

? ? # 在这里可以对每一帧进行处理,例如进行图像处理、分析等

? ? # 写入处理后的帧到输出视频文件
? ? out.write(frame)

? ? # 显示原始视频帧(可选)
? ? cv2.imshow('Original Video', frame)

? ? # 检查是否按下 'q' 键,如果是则退出循环
? ? if cv2.waitKey(25) & 0xFF == ord('q'):
? ? ? ? break

# 释放资源
cap.release()
out.release()
cv2.destroyAllWindows()

请注意,上述代码中包含了一个简单的图像处理部分,你可以在此处添加你自己的图像处理代码。此外,如果你不需要实时显示原始视频,你可以注释掉相关的代码。在这个例子中,按下 'q' 键将退出循环。

记得替换 input_video.mp4 和 output_video.mp4 为你的输入和输出视频文件的路径。

OpenCV调用电脑摄像头


使用OpenCV调用电脑摄像头非常简单。以下是一个基本的示例代码,演示如何使用OpenCV读取摄像头实时视频流:

import cv2

# 打开摄像头
cap = cv2.VideoCapture(0) ?# 0表示第一个摄像头,如果有多个摄像头可以尝试其他数字

# 检查摄像头是否成功打开
if not cap.isOpened():
? ? print("Error: Could not open camera.")
? ? exit()

# 获取摄像头的帧宽度和帧高度
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

while True:
? ? # 读取摄像头的每一帧
? ? ret, frame = cap.read()

? ? # 如果帧读取失败,退出循环
? ? if not ret:
? ? ? ? print("Error: Could not read frame.")
? ? ? ? break

? ? # 在这里可以对每一帧进行处理,例如进行图像处理、分析等

? ? # 显示实时视频流
? ? cv2.imshow('Camera Feed', frame)

? ? # 检查是否按下 'q' 键,如果是则退出循环
? ? if cv2.waitKey(1) & 0xFF == ord('q'):
? ? ? ? break

# 释放摄像头资源
cap.release()
cv2.destroyAllWindows()


?

在上述代码中, cv2.VideoCapture(0) 表示打开第一个摄像头。如果你有多个摄像头,可以尝试更改数字以选择其他摄像头。如果使用笔记本电脑内置摄像头,通常使用? 0 即可。

这段代码会打开摄像头并显示实时视频流。按下 q 键会退出循环,释放摄像头资源。

文章来源:https://blog.csdn.net/qq_50942093/article/details/135116019
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。