做bad apple第二步: python如何将视频变成一帧帧的图片,如何将一帧帧的图片转为视频
直接上代码
"""视频转图片"""
port cv2
def getphoto(video_in, video_save):
cap = cv2.VideoCapture(video_in) # 打开视频文件
n_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # 视频的帧数
fps = cap.get(cv2.CAP_PROP_FPS) # 视频的帧率
dur = n_frames / fps # 视频的时间
num_frame = 0
judge = cap.isOpened()
while judge:
flag, frame = cap.read() # flag是读取状态,frame下一帧
cv2.imshow('video', frame) # capture
if cv2.waitKey(0) == 27:
break
if flag:
num_frame += 1
# print("正在保存第%d张照片" % num_frame)
# cv2.imwrite('a\\' + str(num_frame) + '.jpg', frame) # cv2.imwrite(‘路径’ + ‘名字’ + ‘后缀’, 要存的帧)
# cv2.waitKey(1)
# # new_path = str(num_frame) + '.jpg'
# # cv2.imencode('.jpg', frame)[1].tofile(new_path)
else:
break
print("视频时长: %d 秒" % dur)
print("视频共有帧数: %d 保存帧数为: %d" % (n_frames, num_frame))
print("每秒的帧数(FPS): %.1lf" % fps)
def main():
video_in = 'apple.flv'
video_save = '2th'
getphoto(video_in, video_save)
if __name__ == '__main__':
main()
"""图片转视频"""
import cv2
import os
def getvideo(photo_path, video_name, fps):
filelist = os.listdir(photo_path)
size = (1440, 1080)
video = cv2.VideoWriter(video_name, cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size)
num = int(0)
for item in filelist:
# print(item)
num += 1
print('转化到%d张' % num)
if item.endswith('.jpg'):
item = photo_path + item
img = cv2.imread(item)
video.write(img)
video.release()
cv2.destroyAllWindows()
def main():
photo_path = 'E:\\try apple\\aa\\'
video_name = 'new.avi'
fps = 30
getvideo(photo_path, video_name, fps)
if __name__ == '__main__':
main()
我想说的恶心的地方是:图片转视频时,一定不要把图片的像素大小弄错,我为此白白从凌晨到凌晨2点找bug,各种百度。
还有就是 filelist = os.listdir(photo_path) 这个东西输出后发现不是按照文件名的字典序,像是个二维数组,但是奇怪的是明明不是顺序读取图片的,但是合成后的视频竟然是正确的。但是如果你的图片种有一些一样的图片,合成的视频就会总是闪你那个一样的图片。
我试了下500张图片,钱50张是开场全是黑屏,合成的视频没有开场,但是总是闪黑屏,把这50张照片删了之后就好了。
做bad apple第二步: python如何将视频变成一帧帧的图片,如何将一帧帧的图片转为视频的更多相关文章
- [TPYBoard - Micropython之会python就能做硬件 开篇]会python就能做硬件!
转载请注明:@小五义http://www.cnblogs.com/xiaowuyiQQ群:64770604 会python就能做硬件! 在写这套教程之前,首先感觉山东萝卜电子科技有限公司(turnip ...
- Python+Opencv实现把图片转为视频
1. 安装Opencv包 在Python命令行输入如下命令(如果你使用的Anaconda,直接进入Anaconda Prompt键入命令即可.如果你不知道Anaconda是什么,可以参考王树义老师的文 ...
- python将图片转换为Framebuffer裸数据格式(终端显示图片)
要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口,直接写入像素信息即可. 但普通的图片带有头部信息或者编码格式不同,直接送入Framebuffer是显 ...
- python将图片转换为Framebuffer裸数据格式(终端显示图片)【转】
转自:https://www.cnblogs.com/zqb-all/p/6107905.html 要在ubuntu终端显示图片或者在板子的LCD显示图片,Framebuffer是一个简单易用的接口, ...
- Python人工智能之图片识别,Python3一行代码实现图片文字识别
1.Python人工智能之图片识别,Python3一行代码实现图片文字识别 2.tesseract-ocr安装包和中文语言包 注意:
- 做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)?
import random import string def GenKey(length): chars = string.ascii_letters + string.digits return ...
- Python能做什么,自学Python效果怎么样?
短时间掌握一门技能是现代社会的需求.生活节奏越来越快,现在不是大鱼吃小鱼,而是快鱼吃慢鱼的时代,人的时间比机器的时间更值钱.Python作为一种轻量级编程语言,语言简洁开发快,没那么多技巧,受到众多追 ...
- What exactly can you do with Python? Here are Python’s 3 main applications._你能用Python做什么?下面是Python的3个主要应用程序。
原文链接 Github地址 一.陈述 1,我到底能用Python做什么? 我观察注意到Python三个主要流行的应用: 网站开发: 数据科学——包括机器学习,数据分析和数据可视化: 做脚本语言. 二. ...
- Python论做游戏外挂,Python输过谁?
玩过电脑游戏的同学对于外挂肯定不陌生,但是你在用外挂的时候有没有想过如何做一个外挂呢? 我打开了4399小游戏网,点开了一个不知名的游戏,唔,做寿司的,有材料在一边,客人过来后说出他们的要求,你按照菜 ...
- sersync做实时同步(第二步)
配置文件一般都在sersync2的根目录下.为.xml文件 下面做逐行的进行解释说明: <host hostip="localhost" port="8008&qu ...
随机推荐
- WAP-2.1
WAP 是一种源代码静态分析和数据挖掘工具,用于检测和纠正用 PHP 4.0 或更高版本编写的 Web 应用程序中的输入验证漏洞,且误报率较低. WAP 检测并纠正以下漏洞: SQL Injectio ...
- Doris与mysql语法对照,差异篇
## SQL语法差异:### doris中不支持分组列再使用distinctMSYQL:```SQLselect DISTINCT mid from order_card_detail GROUP B ...
- ES6 之 Promise
promise 与ajax 实现两个ajax返回参数的拼接 // 函数 fetch() { return new Promise((resolve, reject) => { Utils.sen ...
- JAVA基础Day2-基本运算符/自增自减运算符/逻辑运算符、位运算符/包机制
一.基本运算符 算术运算符:+.-.*./.%.++.-- 赋值运算符:= 关系运算符:>.<.>=.<=.==.!= instanceof 逻辑运算符:&&. ...
- C++与C语言中struct 与typedef struct 应用区别(摘自csdn mpp_king)
typedef是类型定义的意思.typedef struct 是为了使用这个结构体方便.具体区别在于:若struct node {}这样来定义结构体的话.在申请node 的变量时,需要这样写,stru ...
- mybatis中xml配置文件头部
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC ...
- asm 理解
stm32中有3条总线:地址总线,数据总线,系统总线:地址总线上是地址值,数据总线上是数据值,cpu读写时会先在地址总线上传输地址值,如果是写操作之后数据总线上会放往前面地址处写入的数据值,如果是读操 ...
- Oracle学习-----基本SQL select语句
一.基本select语句 SELECT 标识 选择那些列 FROM 标识从哪个表中选择 select * 标识 全部选择 select department_id, location_id ...
- 解决navicat远程连接MySQL失败,报错1130问题
1select host from user where user='root'; 2update user set host = '%' where user ='root';3flush priv ...
- shell typeset 命令使用修改大小写
typeset的-u选项可以将一个变量的字符变成大写 1 /home/lee#typeset -u var=abc 2 /home/lee#echo $var 3 ABC -l选项将一个变量的字符变成 ...