【图片操作】提取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的图片帧的操作。


目录
相关文章
|
1月前
|
人工智能 自然语言处理 API
图片转音乐模型来了!Image to Music V2 :只需上传一张照片,自动转换成与图片内容匹配的音频!
图片转音乐模型来了!Image to Music V2 :只需上传一张照片,自动转换成与图片内容匹配的音频!
|
1月前
|
文字识别 数据挖掘 网络安全
Python实现avif图片转jpg格式并识别图片中的文字
在做数据分析的时候有些数据是从图片上去获取的,这就需要去识别图片上的文字。Python有很多库可以很方便的实现OCR识别图片中的文字。这里介绍用EasyOCR库进行图片文字识别。easyocr是一个比较流行的库,支持超过80种语言,识别率高,速度也比较快。
29 2
|
5月前
|
前端开发 JavaScript
前端js实现从视频中提取图片帧
前端js实现从视频中提取图片帧
73 0
|
9月前
|
JavaScript 前端开发
图片转base64、判断图片大小、图片压缩、图片上传
文章主要介绍 `js` 实现压缩上传图片转base64,其他的框架(如React、Vue、Angular)也可借此参考。**这个方法真实可用,已在实际项目中运行**。
186 0
|
11月前
|
编解码 开发工具 Android开发
.9图片的那点事儿
.9图片的那点事儿
146 0
|
存储 C语言 计算机视觉
加载美女图片之OpenCV 图像读取与显示
加载美女图片之OpenCV 图像读取与显示
|
数据安全/隐私保护
生活中常用的图片去水印方法有哪些呢
有时候我们想换头像/微信背景墙了 是不是第一时间想到的是去某书逛逛,有时候看到有些博主分享的壁纸或者表情包等,忍不住的想保存下来,很多人应该还不知道如何下载吧,今天分享我的三个操作方法
【图片操作】给图片添加滤镜
现在我们都喜欢给图片添加滤镜,现在很多相机也自带了许多滤镜。我们可以在拍照的时候选择需要的滤镜。但是有时候我们需要给大量图片添加同样的滤镜,这个时候手动添加就非常麻烦了。为了方便,我们可以使用程序来帮我们完成添加滤镜的操作。
192 0
|
Linux 数据安全/隐私保护 Windows
Stegosuite,图片隐写术
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396511 ...
1347 0
|
缓存 Java 数据安全/隐私保护
给图片加水印?这是我见过最简单的实现方式
大家好,我是指北君。 在项目中经常有需要在图片上添加水印的需求以及在某些场合下需要身份证图片,这时就可以对身份证上加水印防止被用于其他用途,java 在处理图片水印时不需要额外的第三方包,使用 BufferedImage 和 Graphics2D 就可以搞定
给图片加水印?这是我见过最简单的实现方式