这是一个将视频转变为表情包的工具,现实生活中当我们看到一段搞笑的视频,我们可以将这段视频喂给这段程序,生成gif表情包,这样就可以用来舍友斗图了

1、一些限制

1、这个程序不能转化超过15秒以上的视频,因为占用的内存较高,会被终端杀死(除非你的计算机性能很好,也许1分钟的短视频都可以),为了整个程序的鲁棒性,我就调成了15秒

2、转化来的gif噪点画质有显著的下降,GIF 格式有颜色限制(通常为 256 色),可能不适合所有类型的图像内容,所以你可能会整出以下的阴间动图

2、正片

 1 import cv2#导入库
2 import sys
3 import imageio
4
5 def video_turn_gif(add):
6 cap = cv2.VideoCapture(add)#读取视频
7
8 video_frames = []#存储帧数据
9
10 total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))#总共帧数
11 fps = cap.get(cv2.CAP_PROP_FPS)#帧率
12 time_total = total_frames/fps#总共时间
13
14 if time_total <= 10:
15 while True:
16 ret, frame = cap.read()
17 if ret:
18 video_frames.append(frame)#保存视频帧数据
19 else:
20 cap.release()#重置
21 imageio.mimsave("test.gif", video_frames, duration=0.005)#将一帧一帧的图像并入gif,这是整个程序的点睛之笔
22 print("finish!")
23 sys.exit(1)
24 else:
25 print("太长了,老子不干咯!")
26
27 if __name__ == "__main__":
28 add_video = input("video_add......")#获取视频地址
29 video_turn_gif(add_video)

我的思路是,通过cv2将视频分为一帧一帧的图像,将图像信息存在一个列表里,然后用imageio库将这一帧一帧的图像合成一个gif文件,保存再结束程序。 cap.get(cv2.CAP_PROP_FRAME_COUNT) 用来获取总共的帧数, cap.get(cv2.CAP_PROP_FPS) 用来获取视频帧率,我们知道,视频时长=帧数/帧率,这样我们就可以得到时间了,进而判断视频是否超过15秒。 ret, frame = cap.read() 获取视频的帧数,ret是一个布尔值,代表着这一帧是否获取,获取则是True,没获取就是False,frame则是这一帧的图像信息。mimsave函数专门保存GIF或其他动画格式的图像,其第一项为存储的文件地址,第二项为一个列表,存入每一帧图像信息,duration=0.005设置GIF中每帧的持续时间为0.005s,也就是5ms

3、实践

这是成果的动图:

也可以看到明显的噪点

所以大家可以通过录屏、爬虫等方式,将原视频进行剪辑,投给这个程序,得到一个搞笑的表情包。去斗图吧!

一个用Python将视频变为表情包的工具的更多相关文章

  1. Python开发个人专属表情包网站

    “表情包”是一种利用图片来表示感情的一种方式.表情包是在社交软件活跃之后,形成的一种流行文化,表情包流行于互联网上面,基本人人都会发表情. 曾经你是否也有过找不到表情包去应对别人的时候. 今天小编分享 ...

  2. 开源一个使用python和pyQT实现的产测工具

    导语 之前给朋友友情开发的一个产测工具,现开源,有需要的朋友可以在这个基础上进行二次开发. 操作界面如下 主要特性 自动识别启动信息,然后进入产测写入状态 序列号和MAC地址自动按指定数目增加 每次操 ...

  3. 目前比较流行的Python量化开源框架汇总(交易+风险分析工具)

     注:点击框架名称通往Github talib talib的简称是Technical Analysis Library,主要功能是计算行情数据的技术分析指标 numpy 介绍:一个用python实现的 ...

  4. 打包一沓开源的 C/C++ 包管理工具送给你!

    本文作者:HelloGitHub-ChungZH 博客地址:https://chungzh.cn/ 包管理器可以帮助你更方便地安装依赖关系,并决定所安装的版本,提高你的开发幸福感.许多语言都有自己的包 ...

  5. python截取视频制作动态表情包+文字

    1:安装moviepy库 2:安装IPython库 代码如下: from moviepy.editor import * from IPython.display import Image def B ...

  6. 我用Python一键保存了半佛老师所有的骚气表情包

    本文首发于公众号「Python知识圈」,如需转载,请在公众号联系作者授权. 2019年发现两个有意思而且内容比较硬核的公众号.都是同一个人运营的,我们都叫他半佛老师,现实中的职业是风控,公众号内容涉及 ...

  7. Python自动生产表情包

    作为一个数据分析师,应该信奉一句话--"一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态--表情包!!!! 表情包不仅仅是一种符号,更是一种文化--是促进社交 ...

  8. 如何用AR Engine开发一个虚拟形象表情包?

    现如今,人们在网上聊天.发帖时越来越爱用表情包,表情包一方面是一种个性化的表达方式,另一方面更能传达出当下的心理活动,可以说在网络社交中表情包是一个不可或缺的存在.加上近年来元宇宙的兴起,3D虚拟形象 ...

  9. Python实现XX短视频加密算法抓包分析及刷邀请

    Python实现XX短视频加密算法抓包分析及刷邀请 出自:https://zhuanlan.zhihu.com/p/466929667?utm_id=0 Python彳余 一个会常常更新互联网,编程的 ...

  10. 一个超级简单的node.js爬虫(内附表情包)

    之所以会想到要写爬虫,并不是出于什么高大上的理由,仅仅是为了下载个表情包而已-- 容我先推荐一下西乔出品的神秘的程序员表情包. 这套表情包着实是抵御产品.对付测试.嘲讽队友.恐吓前任的良品, 不过不知 ...

随机推荐

  1. KingabseES-SQL优化_提升子查询

    什么是提升子查询/子链接 SubLink,子查询/子链接,他们的区别:子查询不在表达式中子句,子链接在in/exists表达式中的子句. 若以范围表的方式存在,则是子查询: 若以表达式的存在,则是子连 ...

  2. KingbaseES 判断字符串包含的几种方法

    判断字符串包含的几种方法: 1. position test=# select position('aa' in 'abcd'); position ---------- 0 (1 行记录) test ...

  3. [apue] 作为 daemon 启动, Unix Domain Socket 侦听失败?

    前段时间写一个传递文件句柄的小 demo,有 server 端.有 client 端,之间通过 Unix Domain Socket 通讯. 在普通模式下,双方可以正常建立连接,当server端作为d ...

  4. TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型

    TensorRT C# API 项目介绍:基于C#与TensorRT部署深度学习模型 1. 项目介绍    NVIDIA TensorRT 是一款用于高性能深度学习推理的 SDK,包括深度学习推理优化 ...

  5. 鸿蒙HarmonyOS实战-ArkUI组件(Radio)

    一.Radio Radio单选框是一种表单元素,允许用户从一组选项中选择一个选项.它由一个圆圈和一个标签组成,用户只能选择其中一个选项.Radio单选框通常用于表单中,用于收集用户选择的信息,例如用户 ...

  6. OpenHarmony社区运营报告(2023年3月)

      本月快讯 • <OpenHarmony 2022年度运营报告>于3月正式发布,2022年OpenAtom OpenHarmony(以下简称"OpenHarmony" ...

  7. HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求

    随着移动互联网的逐步成熟,用户的需求越来越细化.鸿蒙生态为开发者提供的HarmonyOS SDK开放能力,高效赋能美团外卖等合作伙伴实现更具象.个性化的开发诉求,给用户提供更丰富便捷的体验. 点击链接 ...

  8. JS从图片base64数据中获取图片的宽高

    // js从base64数据中获取宽高 var image = new Image(); image.src = "data:image/png;base64," + base64 ...

  9. 【我与openGauss的故事】如何管理数据库安全(第一部分)

    前言 2021 年 6 月 10 日国家颁布数据安全法对我们国家来说具有重大意义 信息安全法 梳理几点重要意义: (一) 对数据的有效监管实现了有法可依,填补了数据安全保护立法的空白,完善了网络空间安 ...

  10. CentOS 8开启防火墙端口关闭防火墙端口端口对外放行

    1:查看firewall防火墙状态 firewall-cmd --state 或者 systemctl status firewalld 2:打开防火墙 systemctl start firewal ...