教你使用Python提取视频中的美女图片
作者:蚂蚁ailing 发布时间:2021-05-21 22:41:50
前言
人类都是视觉动物,不管是男生还是女生看到漂亮的小姐姐、小哥哥就想截图保存下来。可是截图会对画质会产生损耗,截取的
画面不规整,像素不高等问题。
用 Python 写一个逐帧无损保存视频画面的小脚本大致可以分为三个步骤:
1.在 cmd 中使用 you-get 下载视频
2.OpenCV 读取并处理视频
3.将视频画面保存为图片
安装模块
1.you-get 模块用于下载视频,它需要 ffmpeg 模块配合使用。
pip3 install you-get
2.windows 的 ffmpeg 的下载地址是
[https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-essentials.7z],解压后将 bin 文件加入环境变量。
3.python-OpenCV 模块用来读取视频帧,并保存成图片。
pip3 install opencv-python
you-get
you-get 是一个开源的视频下载软件,支持 80+ 网站视频的下载。只需要一行代码就可以了。
在 cmd 中运行下面的命令下载视频:
you-get -o 下载后保存文件的目录 视频的 url 地址
如果报 ‘you-get’ 不是内部或外部命令,也不是可运行的程序 问题,可以运行
pip show you-get
将 Location 的值的 site-packages 改成 Scripts 加入到环境变量,如:c:\users\xxx\appdata\roaming\python\python39\site-
packages 改成c:\users\xxx\appdata\roaming\python\python39\Scripts。
OpenCV
磨刀不误砍柴工, 在开发之前先来认识一下 OpenCV。它的全称是 Open Source Computer Vision Library,是一个可以跨平台的
计算机视觉库 ,OpenCV-Python 是 OpenCV 的 Python API。
它集合了 C++ 和 Python 的最优特征,用于支持 Python 解决计算机视觉的问题。OpenCV 可以用于人机互动、图像分割、人脸
识别等等领域。
在处理视频按帧保存图片的时候需要用到以下几个函数:
1.cap = cv2.VideoCapture("视频地址"):
参数是视频的地址表示读取一个视频文件。
2.cap = cv2.VideoCapture(0):
参数是 0 表示打开电脑上的摄像头。
3.cap.isOpened():
返回 true 和 false 表示是否成功。
4.success, frame = cap.read():
这个函数就是 OpenCV 读取视频的下一帧,第一个返回值表示是否读取成功,第二个返回值就是返回读取到的视频帧。
5.cv2.imencode():
将上面的视频帧按照图片编码后缓存到内存中,调用 tofile() 函数保存成文件。
话不多说,用上面的函数写一个截取视频画面的 Python 程序
import cv2
import os
image_base_path = "D:\\video\\images\\";
def get_images(video_path):
frame_times = -1;
fileName = video_path.split("\\")[-1:][0].split('.')[0]
image_out_path = image_base_path + fileName
if not os.path.exists(image_out_path):
os.makedirs(image_out_path)
cap = cv2.VideoCapture(video_path)
while cap.isOpened():
frame_times = frame_times + 1
success, frame = cap.read()
if not success:
break;
cv2.imencode('.jpg', frame)[1].tofile(image_out_path + "\\" + str(frame_times) + ".jpg")
if __name__ == '__main__':
get_images('D:\\vedio\\✿温柔旗袍中国风✿
结束
代码和教程给大家放在上面,喜欢的都可以动手操作起来。教程很简单,非常适合大家拿来练手。
来源:https://www.cnblogs.com/123456feng/p/16140671.html


猜你喜欢
- 在python中,我们定义好一个字符串,如下所示。在python中定义个字符串然后把它赋值给一个变量。我们可以通过下标访问单个的字符,跟所有
- OL定义有序列表的时候,除非指定list-style-position:inside;,否则文字和前导符是有缩进的。但有的时候,OL定义的列
- 偶然在Google发现了他们的用户体验设计原则,因此翻译作一下记录。1.以人为本 —他们的生活、他们的工作和他们的梦想2.珍惜每一毫秒的时间
- 本文详细列出了HTML中使用到的各种鼠标事件,如onclick,onmouseover等;页面相关事件如:onerror,onload等;h
- 这篇博客给大家讲解在django中类似触发器的效果这篇教程分别会讲解插入记录后,删除记录前,删除记录后这三个部分相关环境 python 3.
- 目录Counter举例实战sortedallF-strings总结Python中冷门但非常好用的内置函数 Counter举例 实战sorte
- 前言转眼间已经参与过我厂好几个小程序的开发了,下面本妹子将开发中的那些注意点和各位小伙伴们分享下,妥妥的干货一枚。一、WXML不要换行写,有
- 最近在为公司做一个门户网站,项目并不咋D,可规划却不小.在做的过程中就发现修改占了很大的工作量.于是就开始想了想如何使前端修改轻松一些.这个
- 本文实例讲述了Python图像滤波处理操作。分享给大家供大家参考,具体如下:在图像处理中,经常需要对图像进行平滑、锐化、边界增强等滤波处理。
- 前言 其实这个问题困扰我有一段时间,相信也有人和我一样有这个困扰,网上已有很多这种解释了,但是要么就
- 本文实例讲述了使用coverage统计python web项目代码覆盖率的方法。分享给大家供大家参考,具体如下:在使用python+sele
- 前言本文主要介绍了关于利用python将图片转换成excel文档的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。
- 创建测试表-- ------------------------------ Table structure for check_test-
- 删除重复记录,将TABLE_NAME中的不重复记录保存到#TABLE_NAME中 select distinct *&n
- 简介CountMinSketch是一种计数器,用来统计一个元素的计数,它能够以一个非常小的空间统计大量元素的计数,同时保证高的性能及准确性。
- NumPy提供了多种存取数组内容的文件操作函数。保存数组数据的文件可以是二进制格式或者文本格式。二进制格式的文件又分为NumPy
- 作者:HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库博客提供 RSS
- 背景测试工具箱写到一半,今天遇到了一个前后端数据交互的问题,就一起做一下整理。环境-----------------------------
- Go-操作redis安装golang操作redis的客户端包有多个比如redigo、go-redis,github上Star最多的莫属red
- 所有数据库mysqlcheck --auto-repair -A -o -uroot -pyigeorg单一数据库mysqlcheck --