python实现视频转GIF动图(无水印,包含代码详解和.exe执行文件)

本文介绍了如何利用Python的OpenCV和imageio库实现一个简单的视频转GIF功能,用户可以自定义缩放比例、采样率和GIF帧率。代码还包含了GUI界面,提供了.exe程序下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        该代码提供了一个简单的界面,允许用户将视频转换为GIF动画,并且可以自定义采样率、GIF帧率和输出大小。修改后的代码将视频帧的大小调整为固定的尺寸,并在生成GIF动画时保持这个尺寸。

一、核心代码实现

     核心代码如下:

import cv2
import imageio
# 设置视频文件名和输出GIF文件名
videoName = '../video/demo.mov'
outName = "../video/" + videoName[:-3] + 'gif'

# 设置视频帧的缩放比例,采样率,和GIF动画的帧率
scale = 0.25
skipRate = 30
gifFps = 10
# 打开视频文件并获取视频的参数
cap = cv2.VideoCapture(videoName)
videoWidth = cap.get(3)
videoHeight = cap.get(4)
videoFps = cap.get(5)
frameTotal = cap.get(7)
frameForOutput = frameTotal / skipRate
# 创建GIF动画并逐帧处理
with imageio.get_writer(outName, duration=1/gifFps, mode='I') as writer:
    framerCounter = 0
    while True:
        ret, frame = cap.read()
        if not ret:
            print("finished")
            break
        # 增加帧计数器
        framerCounter += 1
        # 按照采样率,只处理每隔skipRate帧的视频帧
        if framerCounter % 10 == 0:
            # 对视频帧进行缩放
            frame = cv2.resize(frame, (0, 0), fx=scale, fy=scale)
            # 在窗口中显示处理后的视频帧
            cv2.imshow('frame', frame)
            # 将视频帧从BGR颜色空间转换为RGB颜色空间
            frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
            # 将处理后的视频帧添加到GIF动画中
            writer.append_data(frame)
            # 打印当前处理进度(ETA)百分比
            print("ETA-", round((framerCounter / frameTotal) * 100, 2), "%")
        else:
            # 跳过不需要处理的帧
            continue
        # 如果按下键盘上的“q”键,则停止处理视频
        if cv2.waitKey(1) == ord('q'):
            break
# 释放视频文件
cap.release()

        实现的代码逻辑如下:

1.导入必要的库:cv2(OpenCV):一个用于图像和视频处理的流行计算机视觉库。
imageio:一个用于读取和写入各种图像数据(包括视频格式)的库。
2.定义视频相关参数:设置视频文件名videoName和输出GIF文件名outName。定义视频帧的缩放比例scale,默认为0.25(即将视频帧的大小缩小为原来的1/4)。定义采样率skipRate,表示每隔多少帧采样一次视频帧,默认为30。定义GIF动画的帧率gifFps,表示输出的GIF动画每秒显示多少帧,默认为10。
3.打开视频文件并获取视频的参数:使用OpenCV的cv2.VideoCapture()打开视频文件,并获取视频的宽度、高度、帧率以及总帧数。
4.创建GIF动画并逐帧处理:使用imageio.get_writer()创建GIF动画的输出文件,并设置帧持续时间为1/GIF帧率,以确保动画的播放速度。

二、实现界面和运行程序

 可以调整按钮进行调整转化GIF动画的质量,展示如下:

         转化后的GIF图像存储到原来上传文件的位置,可自行进行查看。

        该代码GUI界面转化为了.exe程序,大家可以自己下载下来解压使用。解压后.exe程序存储在了./dist/mian1/文件下找到mian1.exe程序即可。

完整代码下载链接:包含.exe应用程序

CSDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习设计与实现

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值