python学opencv|读取视频(二)制作gif

【1】引言

前述已经完成了图像和视频的读取学习,本次课学习制作gif格式动图。

【2】教程

实际上想制作gif格式动图是一个顺理成章的操作,完成了图像和视频的处理,那就自然而然会对gif的处理也产生兴趣。

不过在opencv官网、matplotlib官网和numpy官网,都没有找到**视频生成gif动图函数imageio()**的说明,所以就只好百度和CSDN搜索。

幸好找到了官网地址,给大家分享:Welcome to imageio's documentation! --- imageio 2.36.1 documentation

不过当前对官网还没有很好地理解,所以暂不涉及对官网文档的解读。

接下来重点解读imageio()转化视频为gif的操作。

python 复制代码
import numpy as np #引入计算模块
import cv2 as cv #引入opencv模块
from imageio import mimsave #引入imageio图片处理模块

cap = cv.VideoCapture('56789.mp4')
# 声明编码器和创建 VideoWrite 对象
fourcc = cv.VideoWriter_fourcc('M','J','P','G')#解码器选择

out = cv.VideoWriter('56789-100.mp4', fourcc, 200.0, (720,1280)) #保存为MP4格式
grays=[] #定义一个空矩阵
while (cap.isOpened()): #自定义函数
    ret, frame = cap.read()
    if ret==True:
        out.write(frame) #写入视频
        cv.imshow('frame', frame) #在屏幕上播放视频
        grays.append(frame) #视频存入grays矩阵
        if cv.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break
mimsave('56789-100.gif',grays,fps=160,palettesize=256) #保存视频为gif格式,帧数为160,色彩种类数256
# 释放已经完成的工作
cap.release()
out.release()
cv.destroyAllWindows()

这里相对上一课的变化为:

【a】引入了imageio模块对视频格式进行转化:

复制代码
from imageio import mimsave #引入imageio图片处理模块

【b】预定义一个空矩阵看来存储视频:

复制代码
grays=[] #定义一个空矩阵

【c】使用空矩阵存储视频:

复制代码
if ret==True:
    out.write(frame) #写入视频
    cv.imshow('frame', frame) #在屏幕上播放视频
    grays.append(frame) #视频存入grays矩阵

【d】使用imageio模块转化视频为gif格式:

复制代码
mimsave('56789-100.gif',grays,fps=160,palettesize=256) #保存视频为gif格式,帧数为160,色彩种类数256

实际上转化的动图颜色暗淡。

【e】存储视频的grays.append(frame) 函数应该放在while循环中,经测试没有该循环,程序可能不会运行。

【3】效果

掌握了python+opencv+imageio()函数将视频转化为GIF的基本操作技巧,成功输出了gif格式动图。

相关推荐
程序员cxuan2 小时前
虽迟但到!GPT-5.6 终于来了!
人工智能·后端·程序员
ZhengEnCi4 小时前
Q03-UI设计进阶技巧-让界面更高级的7个核心原则
人工智能
IT_陈寒4 小时前
React的这个渲染问题连官方文档都没说清楚
前端·人工智能·后端
金銀銅鐵5 小时前
[Python] 扩展欧几里得算法
python·数学·算法
Duckdblab5 小时前
DuckDB 性能调优终极指南:打造闪电般的分析体验
python
不加辣椒5 小时前
第12章 工具调用与 Agent 提示工程
人工智能
用户1693176172665 小时前
前端给AI消息做日期分组与时间线
人工智能
带派擂总5 小时前
Python全栈开发精华版最全合集(包含各种面试题) Day24_异常和错误
python
i晟5 小时前
Claude Code Harness 深度拆解:从你敲回车到模型回复,中间发生了什么
人工智能
用户252736278147 小时前
【踩坑复盘】我在本地跑 RAG 知识库时踩了 5 个大坑,吐血整理避坑指南
人工智能