moviepy - 来自moviepy的VideoFileClip在输出视频中生成多个帧
问题描述
import cv2
from moviepy.video.io.VideoFileClip import VideoFileClip
def process_image(img):
out = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
return out
video_output = 'output_videos/Entry_02.mp4'
video_input = VideoFileClip('input_videos/Entry_02.mp4')
processed_video = video_input.fl_image(process_image)
%time processed_video.write_videofile(video_output, audio=False)
从moviepy探索VideoFileClip进行一些视频处理,不知道为什么它会在输出视频中生成重复的多个帧(3x3)。
解决方案
显然,write_videofile
需要一个 RGB 图像(3 通道)而不是返回的灰度图像cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
。out
您应该通过复制到所有通道来获得所需的灰度图像。
def process_image(img):
image_height = img.shape[0]
image_width = img.shape[1]
out = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = np.zeros((3, image_height, image_width))
img[0] = out
img[1] = out
img[2] = out
return np.moveaxis(img, 0, -1)
推荐阅读
- c# - 使用子字符串获取两个字符串之间的值?
- windows - 在批处理中在 endlocal 之后保留变量
- java - 如何在泛型中获取“枚举”的值?
- php - 尝试将代码作为插件添加到 Wordpress 网站,但只有 css/js 代码而不是 zip 文件夹
- gzip - 如何将 gzip 压缩添加到为 Quart 应用程序提供服务的 Hypercorn 服务器
- android - 如何使用 Volley 发送表单数据(如在 Postman 中)?
- c - Valgrind 陷入无限循环
- angular - 角度:组件上的 scrollIntoView
- javascript - HTML/JS:如果输入 Y 已填充,则忽略必需的输入 X
- php - Laravel 添加查询参数查看