python 读取视频有多少帧并将视频转为GIF动态图

这篇具有很好参考价值的文章主要介绍了python 读取视频有多少帧并将视频转为GIF动态图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 python读取视频帧

2 python 将MP4格式视频前500帧转为动态图

3 python 将MP4格式视频第2688到2890帧转为动态图,并将gif图片的七分之一列和后七分之一列裁掉

4 python 将MP4格式视频第2688到2890帧转为动态图,并将gif图片的七分之一行和后七分之一行裁掉

1 python读取视频帧

要读取视频有多少帧,可以使用Python中的OpenCV库。以下是一个示例代码:

import cv2

# 打开视频文件
cap = cv2.VideoCapture('path/to/video.mp4')

# 获取视频的帧数
frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

# 输出视频的帧数
print(f"The video contains {frame_count} frames.")

# 释放视频对象
cap.release()

        在这个示例中,我们首先使用cv2.VideoCapture()函数打开视频文件,并将其存储在一个变量中。然后,我们使用cap.get(cv2.CAP_PROP_FRAME_COUNT)函数获取视频的帧数,并将其转换为整数类型。最后,我们打印视频的帧数。

        请注意,在完成对视频的操作后,需要使用cap.release()函数释放视频对象。

        值得注意的是,使用OpenCV库可以更加高效和稳定地处理视频文件。

2 python 将MP4格式视频前500帧转为动态图

        要将MP4格式视频的前500帧转换为动态图,您可以使用Python中的OpenCV库和imageio库。以下是一个示例代码:

import cv2
import imageio

# 打开视频文件
cap = cv2.VideoCapture('path/to/video.mp4')

# 获取视频帧率和尺寸
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 创建输出GIF文件的对象
output_file = 'path/to/output.gif'
writer = imageio.get_writer(output_file, fps=fps)

# 读取视频的前500帧
for i in range(500):
    ret, frame = cap.read()
    if ret:
        # 将帧转换为RGB格式,并将其添加到GIF文件中
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        writer.append_data(frame)
    else:
        break

# 关闭视频对象和输出GIF文件对象
cap.release()
writer.close()

# 打印完成消息
print(f"Successfully converted the first 500 frames of the video to '{output_file}'.")

        在这个示例中,我们首先使用cv2.VideoCapture()函数打开视频文件,并获取视频的帧率和尺寸。然后,我们使用imageio.get_writer()函数创建输出GIF文件的对象,并设置帧率。

        接下来,我们使用for循环读取视频的前500帧。对于每一帧,我们首先使用cap.read()函数读取帧,并将其存储在一个变量中。如果读取成功,我们将使用cv2.cvtColor()函数将帧转换为RGB格式,并使用writer.append_data()函数将其添加到输出GIF文件中。

        当循环结束后,我们使用cap.release()函数关闭视频对象和writer.close()函数关闭输出GIF文件对象。最后,我们打印一个完成消息。

        请注意,在完成对视频的操作后,需要释放视频对象并关闭输出GIF文件对象。此外,如果希望转换的帧数不是固定的,可以将range(500)替换为适当的范围。

3 python 将MP4格式视频第2688到2890帧转为动态图,并将gif图片的七分之一列和后七分之一列裁掉

import cv2
import imageio

# 打开视频文件
cap = cv2.VideoCapture('path/to/video.mp4')

# 获取视频帧率和尺寸
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 计算裁剪后的GIF宽度和高度
cropped_width = width - width // 7 * 2
cropped_height = height

# 创建输出GIF文件的对象
output_file = 'path/to/output.gif'
writer = imageio.get_writer(output_file, fps=fps)

# 读取视频的第2688到2890帧
for i in range(2688, 2891):
    cap.set(cv2.CAP_PROP_POS_FRAMES, i)  # 将帧的位置设置为i
    ret, frame = cap.read()
    if ret:
        # 将帧裁剪为指定的大小,并将其转换为RGB格式
        frame = frame[:, width//7:width-width//7, :]
        frame = cv2.resize(frame, (cropped_width, cropped_height))
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        # 将帧添加到GIF文件中
        writer.append_data(frame)
    else:
        break

# 关闭视频对象和输出GIF文件对象
cap.release()
writer.close()

# 打印完成消息
print(f"Successfully converted frames 2688 to 2890 of the video to '{output_file}' with cropped edges.")

        在这个示例中,我们首先计算裁剪后的GIF宽度和高度,即将GIF的宽度缩小为原来的5/7,并保持高度不变。

        然后,我们使用for循环读取视频的第2688到2890帧。对于每一帧,我们首先使用cap.set(cv2.CAP_PROP_POS_FRAMES, i)函数将帧的位置设置为当前帧的索引i,然后使用cap.read()函数读取帧,并将其存储在一个变量中。

        如果读取成功,我们将使用frame[:, width//7:width-width//7, :]将GIF的第七分之一列和后七分之一列裁掉,再使用cv2.resize()函数将帧裁剪为指定的大小,将其转换为RGB格式,并使用writer.append_data()函数将其添加到输出GIF文件中。

        最后,我们关闭视频对象和输出GIF文件对象,并打印一个完成消息。文章来源地址https://www.toymoban.com/news/detail-676588.html

        请注意,我们使用了整数除法//来计算要裁剪的列的索引。这是因为GIF的宽度可能不是7的倍数,所以我们需要向下取整以确保我们裁剪正确的列。

4 python 将MP4格式视频第2688到2890帧转为动态图,并将gif图片的七分之一行和后七分之一行裁掉

        如果需要裁剪的是行而不是列,则可以类似地计算裁剪后的GIF宽度和高度,并使用frame[row_start:row_end, :, :]来裁剪每一帧的行。以下是一个示例代码:

import cv2
import imageio

# 打开视频文件
cap = cv2.VideoCapture('path/to/video.mp4')

# 获取视频帧率和尺寸
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))

# 计算裁剪后的GIF宽度和高度
cropped_width = width
cropped_height = height - height // 7 * 2

# 创建输出GIF文件的对象
output_file = 'path/to/output.gif'
writer = imageio.get_writer(output_file, fps=fps)

# 读取视频的第2688到2890帧
for i in range(2688, 2891):
    cap.set(cv2.CAP_PROP_POS_FRAMES, i)  # 将帧的位置设置为i
    ret, frame = cap.read()
    if ret:
        # 将帧裁剪为指定的大小,并将其转换为RGB格式
        frame = frame[height//7:height-height//7, :, :]
        frame = cv2.resize(frame, (cropped_width, cropped_height))
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
        # 将帧添加到GIF文件中
        writer.append_data(frame)
    else:
        break

# 关闭视频对象和输出GIF文件对象
cap.release()
writer.close()

# 打印完成消息
print(f"Successfully converted frames 2688 to 2890 of the video to '{output_file}' with cropped edges.")

        在这个示例中,我们使用了类似于前一个示例的方法来计算裁剪后的GIF宽度和高度,但这次我们将GIF的高度缩小为原来的5/7,并保持宽度不变。

        然后,我们使用for循环读取视频的第2688到2890帧,并使用                

  cap.set(cv2.CAP_PROP_POS_FRAMES, i)函数将帧的位置设置为当前帧的索引i

        对于每一帧,我们使用frame[height//7:height-height//7, :, :]来裁剪GIF的第七分之一行和后七分之一行,再使用cv2.resize()函数将帧裁剪为指定的大小,将其转换为RGB格式,并使用writer.append_data()函数将其添加到输出GIF文件中。

        最后,我们关闭视频对象和输出GIF文件对象,并打印一个完成消息。

到了这里,关于python 读取视频有多少帧并将视频转为GIF动态图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • gocv读取gif多帧图像,mp4视频图像,opencv,VideoCaptureFile,opencv_ffmpeg

    读取GIF图像 opencv中无法读取gif图像,这是由于license原因。转而使用 videocapture 或者第三方的 PIL 库(Python),但是其实Golang的基础库 image 中就有读取gif图像的。于是一个简单的示例如下 这里只会播放一遍gif图像,我们还可以解析gif中的LoopCount来增加循环播放的逻辑。 读取

    2024年02月12日
    浏览(54)
  • 【FFmpeg】视频与图片互相转换 ( 视频与 JPG 静态图片互相转换 | 视频与 GIF 动态图片互相转换 )

    执行 命令 , 将 输入文件 input.mp4 中的 第 2 秒 开始的 1 帧数据 转为一张 848x480 像素的图片 , 输出到 output.jpg 文件中 ; 上述命令解析 : -i input.mp4 : 指定输入文件为 input.mp4 , -i 参数用于设置输入文件 ; -y : 设置 如果输出文件已存在 , 直接覆盖 , 如果不设置该选项 , 会中断执行

    2024年04月23日
    浏览(48)
  • Matlab对图像和视频的简单处理(图像视频文件读取和输出,转灰度图,取指定帧的图像)

    语法介绍 : 参数介绍 : filename :要读取的图像文件名,可以是完整的路径。 fmt :可选参数,指定图像的格式。默认情况下,imread会尝试猜测文件格式。常用的格式包括 ‘bmp’、‘gif’、‘jpeg’、‘png’、\\\'tiff’等。 返回值 : A :返回读取的图像数据矩阵,它可以是灰度

    2024年02月06日
    浏览(55)
  • 【linux】在Ubuntu20.04下录制屏幕为视频,并制作成gif动态图片

    录制屏幕软件 视频转图片软件 图片合成gif动态图片 1)运行命令 2)设置:区域、帧率 选择录制的区域; 设置帧率为10(或者更小,以适合gif即可) 3)选择视频格式为mp4 4)开始录制 点击Start recording开始录制,再次点击结束录制,点击Save recording即可

    2024年02月09日
    浏览(62)
  • 【opencv+图像处理】(Gui Features in OpenCV) 1-1摄像头:采集摄像头视频,读取视频帧,录制视频

    本专栏代码总库地址 https://github.com/xiawei20161308104/xv_opencv_tutorials 本节代码路径 xv_opencv_tutorials/VideoRelated/get_started_with_videos.py xv_opencv_tutorials/VideoRelated/get_and_set_video.py xv_opencv_tutorials/VideoRelated/save_video.py 参考官网 https://docs.opencv.org/4.x/d6/d00/tutorial_py_root.html 从设备,可以是摄像

    2024年02月03日
    浏览(72)
  • python读取Excel指定范围并转为数组

            最近需要读取Excel中的内容,然后进行后续操作,对于这块知识,博主以前以为自己不会涉及到,但是现在一涉及到,第一步就错了,搞了好久。真的心累。因此写了这篇博客。  目的:excel中存放着数据,如果要进行计算及其它操作,首先就要进行读取。 目录 安装

    2023年04月12日
    浏览(44)
  • Python读取红外图像 - 实现红外图像的读取和处理

    Python读取红外图像 - 实现红外图像的读取和处理 在许多工业、安防等领域中,红外图像无疑是一种不可或缺的重要资源。因此,能够快速、准确地读取和处理红外图像,对于工程师和科学家来说非常必要。 Python作为一种强大的编程语言,提供了丰富的图像处理库,允许我们

    2024年02月11日
    浏览(43)
  • Python:使用openpyxl读取Excel文件转为json数据

    openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files 文档 https://openpyxl.readthedocs.io/en/stable/ https://pypi.org/project/openpyxl/ 安装 环境 读取文件示例:将Excel文件读取为json数据 有如下一个文件 data.xlsx 实现代码 输出读取的json数据 读写示例

    2024年02月15日
    浏览(73)
  • Python处理xlsx文件(读取、转为列表、新建、写入数据、保存)

    xlsxwriter**库对于xslx表的列数不做限制, xlrd 库不能写入超过65535行,256列的数据。 由于需要处理的数据行列数较多,遇到报错才发现库的限制问题,记录一下。

    2024年02月12日
    浏览(70)
  • 通过python如何实现视频提取音频,并将音频转文本

    大致思路: (1)使用moviepy库中的VideoFileClip类读取视频文件,并将其转换为音频文件; (2)使用pydub库中的splitonsilence函数将音频文件分割成多个音频片段,以便进行语音识别; (3)使用SpeechRecognition库中的Recognizer类进行语音识别,并将识别结果写入文本文件中 注意: 将

    2024年02月05日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包