【图片操作】提取GIF的图片帧

简介: gif是我们日常生活中常用的一种图片,它介于视频和图片之间。我们可以用图片的内存体验到一些视频的感觉。但是有时候我们会想把gif的图片全部提取出来,今天我们就来实现一下这个操作。

一、前言

gif是我们日常生活中常用的一种图片,它介于视频和图片之间。我们可以用图片的内存体验到一些视频的感觉。但是有时候我们会想把gif的图片全部提取出来,今天我们就来实现一下这个操作。

二、 OpenCV简单使用

OpenCV库包含很多东西,主要就是计算机视觉和机器学习方面的作用。其中对图像、视频的操作是OpenCV的强项。比起Pillow模块,OpenCV要更加专业,下面我们就来具体看看吧。

1、模块安装

模块安装只需要执行下面的语句即可:

pip install opencv-python
复制代码

安装完成后我们就可以通过下面的的方式导入模块:

import cv2 as cv
复制代码

然后我们可以通过cv.来调用OpenCV中的函数。

2、基本操作

这里我们来看看OpenCV读取图片、视频的操作:

import cv2 as cv
img = cv.imread("test.jpg")
cv.imshow(img, "img")
cv.waitKey()
cv.destroyAllWindows()
复制代码

上面就是读取图片并显示的操作,其中imread用来读取图片、imshow用来显示图片。而:

cv.waitKey()
cv.destroyAllWindows()
复制代码

是显示图片的常规操作。下面看看读取视频的操作:

import cv2 as cv
# 读取视频
video = cv.VideoCapture("test.mp4")
# 读取一帧视频
ret, frame = video.read()
复制代码

上面读取视频的操作,同时我们可以用上面的操作读取GIF。然后我们可以调用read方法实现对视频或GIF帧的读取。 这里的read方法会返回两个参数,第一个是是否有下一帧,第二个则是图片帧。

3、读取GIF的帧

这里我们来读取GIF中的所有帧:

import cv2 as cv
gif = cv.VideoCapture("test.gif")
flag = True
while flag:
    ret, frame = gif.read()
    if not ret:
        flag = False
复制代码

通过上面的代码,我们就可以读取GIF中所有帧。

三、提取GIF的图片帧

这里我们一帧帧读取图片,然后再将图片保存下来:

import os
import cv2 as cv
frame_path = "frames"
# 创建目录
if not os.path.exists(frame_path)
    os.mkdir(frame_path)
gif = cv.VideoCapture("test.gif")
flag = True
video_name = 1000
while flag:
    # 读取图片帧
    ret, frame = gif.read()
    # 保存图片帧
    cv.imwrite(str(video_name) + ".jpg", frame)
    video_name += 1
    if not ret:
        flag = False
复制代码

上面我们就我们实现了提取GIF的图片帧的操作。


目录
相关文章
|
传感器 数据采集 运维
常见的中断源类型详解
【4月更文挑战第4天】常见的中断源类型详解
1319 3
|
Linux 数据安全/隐私保护 Windows
更换(Pypi)pip源到国内镜像
pip国内的一些镜像 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.
247590 2
|
监控 JavaScript 前端开发
|
编解码 自然语言处理
重磅!阿里巴巴开源最大参数规模大模型——高达720亿参数规模的Qwen-72B发布!还有一个的18亿参数的Qwen-1.8B
阿里巴巴开源了720亿参数规模的Qwen-72B大语言模型,是目前国内最大参数规模的开源模型。该模型在3万亿tokens数据上训练,支持多种语言和代码、数学等数据。Qwen-72B模型具有出色的评估效果,在数学逻辑和意图理解等方面超过了其他开源模型,并且支持多语言扩展。此外,阿里巴巴还开源了18亿参数规模的Qwen-1.8B模型,虽然规模较小但效果不错。Qwen-72B模型已对学术和个人完全开放,商用情况下月活低于100万可直接商用。有兴趣的用户可以通过相关链接获取模型地址和资源信息。
|
3月前
|
机器学习/深度学习 运维 监控
[VLDB 2025]面向Flink集群巡检的交叉对比学习异常检测
阿里云与华东师范大学合作论文《Noise Matters: Cross Contrastive Learning for Flink Anomaly Detection》被VLDB 2025接收。该研究聚焦Flink集群热点机器异常检测,提出跨对比学习方法,结合先验知识优化模型训练,有效应对噪声数据干扰,提升检测准确率。该技术已应用于Flink集群智能巡检系统,助力运维风险预警。
244 0
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
1299 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
9月前
|
存储 机器学习/深度学习
MustDrop:多阶段去除冗余视觉token,提升多模态大模型推理效率
本文提出了一种高效的多模态大模型,多阶段去除冗余视觉token——MustDrop。多模态大模型中的视觉tokens通常表现出显著的空间和时间冗余,并且大模型的大部分输入令牌是视觉tokens,这极大程度上影响了多模态大模型推理效率。
525 11
|
9月前
|
人工智能 编解码 文字识别
视觉理解模型Qwen2.5-VL开源,斩获多榜单冠军!
视觉理解模型Qwen2.5-VL开源,斩获多榜单冠军!
742 0
|
人工智能 文字识别 自然语言处理
文档图像多模态大模型最新技术探索
文档图像多模态大模型最新技术探索
920 0
|
存储 IDE API
最佳实践:通过 FastAPI APIRouter 提升开发效率
FastAPI 是一个现代的、高性能的 Python Web 框架,它提供了 APIRouter 来帮助组织和管理路由。APIRouter 是一个可用于组织和分组路由的类,使得代码结构更加清晰和可维护。本文将介绍 FastAPI APIRouter 的用法,包括实践案例以及在 IDE 编辑器中的运行步骤。