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

相关推荐
火山引擎开发者社区2 小时前
火山引擎发布《企业级 ArkClaw 安全白皮书》
人工智能
阿里云大数据AI技术2 小时前
Hologres AI Function 文本分类实战:从提示词设计到 KV-Cache 调优,全程 SQL 搞定
人工智能·sql
认真的酒窝3 小时前
自己动手开发编译器(十一)语义分析
java·开发语言
Lyn_Li3 小时前
扫描 PDF 歪了怎么办?用 6 种检测方法做本地批量扶正(附开源工具)
python·pdf·ocr·tesseract·开源工具·文档处理·本地处理·扫描件纠偏
金銀銅鐵3 小时前
费马小定理
python·数学·算法
code_pgf3 小时前
AI-Agent记忆机制分析
大数据·人工智能
wbs_scy4 小时前
Linux C++ 高并发编程:线程池全链路深度解析,从原理到手撕实现
java·开发语言
JAVA面经实录9174 小时前
Linux 常用命令完整知识体系
java·linux·开发语言·汇编