Python+OpenCV读写视频的方法详解
本文将介绍在Python开发环境下如何使用OpenCV读写视频,并提供示例代码以帮助读者更好地掌握该技术。
读取视频
使用OpenCV读取视频的步骤可以概括如下:
- 导入所需模块
import cv2
- 使用
cv2.VideoCapture()
函数创建一个视频对象,参数可以是视频文件的路径或者摄像头设备的编号
cap = cv2.VideoCapture('video.mp4')
- 使用
cap.isOpened()
函数检查视频是否打开成功,如果返回值是True
则表示打开成功,否则表示失败
if not cap.isOpened():
print('视频文件打开失败')
- 循环读取视频的每一帧,直到视频的最后一帧。使用
cv2.VideoCapture.read()
函数读取一帧视频,返回两个值:一个布尔值表示是否成功读取帧,一个表示帧的图像数组
while cap.isOpened():
success, frame = cap.read()
if success:
# 处理帧图像
else:
break
- 在读取完毕后记得释放资源,使用
cv2.VideoCapture.release()
函数将视频对象释放
cap.release()
示例1:读取并显示视频
下面的示例演示了如何读取并显示一个视频文件中的每一帧。该视频文件名称为video.mp4
。
import cv2
cap = cv2.VideoCapture('video.mp4')
if not cap.isOpened():
print('视频文件打开失败')
while cap.isOpened():
success, frame = cap.read()
if success:
cv2.imshow('frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break
cap.release()
cv2.destroyAllWindows()
在上述代码中,我们使用cv2.imshow()
函数显示每一帧的图像,使用cv2.waitKey()
等待用户输入q
来退出循环,最后使用cv2.destroyAllWindows()
关闭所有窗口。
写入视频
使用OpenCV写入视频的步骤可以概括如下:
- 导入所需模块
import cv2
- 使用
cv2.VideoWriter()
函数创建一个写入器对象,参数包括视频文件的名称、编码器、帧速率、视频的宽度和高度
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, 25.0, (640, 480))
- 循环读取每一帧图像,并使用
cv2.VideoWriter.write()
函数将其写入视频文件中
out.write(frame)
- 在写入完毕后记得释放资源,使用
cv2.VideoWriter.release()
函数将写入器对象释放
out.release()
示例2:将摄像头拍摄到的视频保存为文件
下面的示例演示了如何从摄像头读取视频并将其保存为一个MP4格式的文件。该代码将捕捉来自默认摄像头的视频流,并将其写入名为output.mp4
的文件中。
import cv2
cap = cv2.VideoCapture(0)
if not cap.isOpened():
print('摄像头打开失败')
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter('output.mp4', fourcc, 25.0, (640, 480))
while cap.isOpened():
success, frame = cap.read()
if success:
out.write(frame)
cv2.imshow('frame', frame)
if cv2.waitKey(25) & 0xFF == ord('q'):
break
else:
break
cap.release()
out.release()
cv2.destroyAllWindows()
在上述代码中,我们使用了cv2.VideoCapture()
函数打开摄像头设备,与读取视频文件时的步骤大致相同,只是参数为0表示默认摄像头设备。
同时,我们还使用了cv2.VideoWriter()
函数创建一个写入器对象,并将每一帧图像写入到输出文件中。
结论
通过阅读本文,读者可以了解如何使用Python和OpenCV读取和写入视频。以上提供的两个示例可以帮助学习者更好地理解和使用这些技术。如果读者有更多的问题,欢迎咨询OpenCV官方文档、Python官方文档或其他相关技术社区的专家。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python+OpenCV读写视频的方法详解 - Python技术站