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格式动图。

相关推荐
大圣编程1 小时前
Java 多维数组详解
java·开发语言
山东云弈创峰科技3 小时前
山东云弈创峰:基于多模态AI的跨境供应链数字化重构
人工智能·重构
智慧景区与市集主理人4 小时前
巨有科技乡村农文旅智慧建设|适配乡村短板,打造轻量长效数字业态
人工智能·科技
甲维斯4 小时前
马斯克Grok4.5太会了!狙击GPT5.6,贴脸Opus4.8!
人工智能·ai编程
殳翰4 小时前
下服务器端开发流程及相关工具介绍(C++)
开发语言·c++
雪碧聊技术4 小时前
Badge 应用场景与落地实践指南
大数据·人工智能
ai产品老杨4 小时前
NVIDIA GPU部署AI视频分析项目实战记录
人工智能·音视频
落寞的星星4 小时前
这个对象就包含了已经转换好的DFA和各种词法分析器运转所需要的参数。下一步,我们就可以用ScannerInfo对象创建出Scanner对象,请看下面的代码:
开发语言·c#
nothing&nowhere5 小时前
用 Python 做问卷数据清洗:无效样本检测与处理实战
开发语言·python·数据清洗·数据处理·问卷星·问卷星脚本·刷问卷
花酒锄作田5 小时前
如何发布自己的 Python 库到 PyPI
python