python - 如何解决逐帧保存视频的问题
问题描述
问题是我尝试保存一个视频文件,每次我从另一个函数中得到一个帧(我检查这不是同一个帧......),创建的视频但只有一个帧。我在类外运行一个循环Video_utility
并将帧发送到函数save_and_display_video
。
import cv2
class Video_utility:
def __init__(self, name_video, format_video, display, fps, size):
self.name_video = name_video
self.format_video = format_video
self.display = display
self.fps = fps
self.size = size
self.stream_frame = None
self.flag_update = True
self.display = True
self.fourcc = cv2.VideoWriter_fourcc(*'XVID')
self.out = cv2.VideoWriter(name_video, self.fourcc, fps, self.size)
self.i = 0
def save_and_display_video(self, frame):
frame = cv2.resize(frame,(self.size))
self.out.write(frame)
self.out.release()
cv2.destroyAllWindows()
解决方案
不要在每一帧之后关闭文件
您的 save_and_display_video() 函数中有 self.out.release() 。
只有在收到整个视频后,您才需要这样做。
推荐阅读
- java - 将 Kafka Stream 字数示例转换为输出 JSON 对象
- c++ - Mingw-64 在构建和安装后不会编译 openCV 代码
- excel - 使用时间变量计算时出现内部错误 51
- traefik - Traefik/Portainer - ERR_TOO_MANY_REDIRECTS
- python - 图表断开连接:无法获取张量 Tensor Keras Python 的值
- flask - 如何在 Flask HTML 模板中设置变量值
- flutter - 颤振如何保持指标值显示?
- flutter - 如何在 Flutter 中使用 flutter_bloc 自动刷新上一页(第一页)
- javascript - 如何改进 cubejs preagregations 创建过程?(即使使用 partitionGranularity 也需要很长时间来构建 preaggs)
- flutter - 如何为运行时创建的 TextField 调用 requestFocus?