【代码---利用一个小程序,读取文件夹中图片,将其合成为一个视频】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

创建一个程序将图像合成为视频通常需要使用图像处理和视频编码库。

下面是一个使用Python的例子,其中使用OpenCV来处理图像和生成视频:


提示:以下是本篇文章正文内容,下面案例可供参考

程序

import cv2
import os

def images_to_video(image_folder, video_name, fps=30):
    images = [img for img in os.listdir(image_folder) if img.endswith(".png")]
    frame = cv2.imread(os.path.join(image_folder, images[0]))
    height, width, layers = frame.shape

    video = cv2.VideoWriter(video_name, cv2.VideoWriter_fourcc(*'mp4v'), fps, (width,height))

    for image in images:
        video.write(cv2.imread(os.path.join(image_folder, image)))

    cv2.destroyAllWindows()
    video.release()

if __name__ == "__main__":
    image_folder = "path/to/your/image/folder"
    video_name = "output_video.mp4"
    images_to_video(image_folder, video_name)

详细说明

images = [img for img in os.listdir(image_folder) if img.endswith(".png")]

这行代码是一个列表推导式,用于从指定文件夹中选择以 “.png” 结尾的文件。让我逐步解释它:

os.listdir(image_folder): os.listdir 函数返回指定目录中的文件和文件夹的列表。

for img in os.listdir(image_folder): 这部分是一个 for 循环,遍历指定目录中的每个文件和文件夹。

if img.endswith(“.png”): 这是一个条件语句,用于检查当前文件是否以 “.png” 结尾。如果是,就将它包含在最终列表中。

images = […]: 这将满足条件的文件列表存储在名为 images 的变量中。

因此,整个行的作用是创建一个名为 images 的列表,其中包含指定文件夹中以 “.png” 结尾的所有文件的名称。这个列表将用于后续的图像处理和视频生成步骤。

frame = cv2.imread(os.path.join(image_folder, images[0]))

这行代码使用 OpenCV 的 cv2.imread 函数读取第一张图像,并将其存储在变量 frame 中。让我解释一下:

os.path.join(image_folder, images[0]): 这部分使用 os.path.join 将图像文件夹路径和第一个图像文件的名称连接起来,形成完整的文件路径。images[0] 是 images 列表中的第一个图像文件的名称。

cv2.imread(…): 这是 OpenCV 库中的函数,用于读取图像文件。它接受图像文件的完整路径作为参数,并返回一个表示图像的多维数组(通常是 NumPy 数组)。

frame = …: 将读取的图像存储在名为 frame 的变量中,以便后续用于视频生成。

因此,这行代码的作用是读取第一张图像并将其存储在 frame 变量中,以便在后续步骤中将其添加到视频中。

height, width, layers = frame.shape

这行代码使用 OpenCV 中的 shape 属性获取图像的高度、宽度和通道数。让我解释一下:

frame: 这是之前通过 cv2.imread 读取的图像,存储在变量 frame 中。

frame.shape: shape 属性返回一个包含三个值的元组,分别表示图像的高度、宽度和通道数。

height, width, layers = frame.shape: 将元组中的三个值分别赋给变量 height、width 和 layers。

这行代码的目的是获取读取的图像的尺寸信息,以便在后续步骤中创建视频写入对象时使用。这些尺寸信息用于设置视频的分辨率。

video = cv2.VideoWriter(video_name, cv2.VideoWriter_fourcc(*'mp4v'),fps, (width,height))

这行代码创建了一个用于写入视频的 cv2.VideoWriter 对象。让我逐步解释:

video_name: 这是要保存的输出视频文件的名称。在代码中,它被设置为之前指定的 video_name。

cv2.VideoWriter_fourcc(*‘mp4v’): 这是视频编解码器的四字符代码。‘mp4v’ 表示使用 MP4 编码格式。cv2.VideoWriter_fourcc 将四字符代码作为参数,通过 *‘mp4v’ 的语法将字符串拆分为单个字符,并传递给函数。

fps: 这是视频的帧率,即每秒显示的图像数。在代码中,它被设置为之前指定的 fps。

(width, height): 这是视频的分辨率,即每一帧图像的宽度和高度。在代码中,它被设置为之前从图像中获取的 width 和 height。

整体而言,这行代码创建了一个 cv2.VideoWriter 对象,用于将图像合成为视频。视频的编码格式为 MP4,帧率为 fps,分辨率为 (width, height)。这个对象将在后续步骤中用于将图像写入视频。

for image in images:
video.write(cv2.imread(os.path.join(image_folder, image)))

这部分代码使用 cv2.imread 读取每张图像,然后通过 video.write 将每张图像写入先前创建的视频文件。让我逐步解释:

for image in images:: 这是一个 for 循环,遍历 images 列表中的每个图像文件。

os.path.join(image_folder, image): 使用 os.path.join 将图像文件夹路径和当前图像文件的名称连接起来,形成完整的文件路径。

cv2.imread(…): 这是 OpenCV 中的函数,用于读取当前图像文件。

video.write(…): 这是 cv2.VideoWriter 对象的方法,用于将读取的图像写入视频。每次迭代都将当前图像写入视频。

这个循环遍历所有图像文件,将它们一个接一个地写入视频。整个视频生成的过程通过不断地读取图像并将其写入视频来完成。最后,通过 cv2.destroyAllWindows() 关闭图像窗口,并通过 video.release() 释放视频写入对象。这样就完成了图像合成为视频的过程。


总结

以上就是一个读取文件夹中图片,将其合成为一个视频的小程序!!!

  • 25
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值