读视频
# 方式一
video = cv2.VideoCapture("street.mp4")
#将视频文件初始化为VideoCapture对象
success, frame = video.read()
#read()方法读取视频下一帧到frame,当读取不到内容时返回false!
while success and cv2.waitKey(1) & 0xFF != ord('q'):
#等待1毫秒读取键键盘输入,最后一个字节是键盘的ASCII码。ord()返回字母的ASCII码
cv2.imshow('frame', frame)
success, frame = video.read()
cv2.destroyAllWindows()
video.release()
# 方式二
video = cv2.VideoCapture("street.mp4")
while video.isOpened():
# 当视频对象初始化完成之后,isOpened()返回true
success, frame = video.read()
if success and cv2.waitKey(1) & 0xFF != ord('q'):
cv2.imshow('frame', frame)
else:
break
cv2.destroyAllWindows()
video.release()
# 方式三
video = cv2.VideoCapture("street.mp4")
while video.isOpened():
if video.grab() and cv2.waitKey(1) & 0xFF != ord('q'):
success, frame = video.retrieve()
if success:
cv2.imshow('frame', frame)
else:
break
cv2.destroyAllWindows()
video.release()
read_street.gif
视频基本属性
print(video.get(cv2.CAP_PROP_FPS))
# 返回帧率
print(video.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(video.get(cv2.CAP_PROP_FRAME_WIDTH))
"""
29.983745075929534
544.0
960.0
"""
写视频
video = cv2.VideoCapture("street.mp4")
fps = video.get(cv2.CAP_PROP_FPS)
size = (int(video.get(cv2.CAP_PROP_FRAME_WIDTH)), int(video.get(cv2.CAP_PROP_FRAME_HEIGHT)))
# opencv支持不同的编码格式
video_writer = cv2.VideoWriter('outputVideo.avi', cv2.VideoWriter_fourcc(*'XVID'), fps, size)
video = cv2.VideoCapture("street.mp4")
success, frame = video.read()
while success:
video_writer.write(frame)
success, frame = video.read()
video_writer.release()