做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 ...
随机推荐
- 【Java】List
对List中map集合中某个字段排序 升序排列 方法1 Collections.sort(maps, new Comparator<Map<String, Object>>() ...
- redis统计用户活跃数量
1.说明,redis 位图存储节省内存,用户id:156,1333; 如果用户登录,根据日期存储为1 setbit 20209001 156 1 ;//id为156的用户在1月1号登录了 setbit ...
- Docker之基本原理介绍
Docker 环境搭建请移步:https://i.cnblogs.com/posts/edit;postId=14090026 First:docker能做什么? 传统的环境部署: 1.环境和项目分开 ...
- mac中chrome常用快捷键
1.标签页和窗口快捷键 ⌘-N 打开新窗口. ⌘-T ...
- 上传路径Class替换无效
路径配置文件使用的常量,其它文件使用路径时,编译class时为静态常量信息,改变不同的路径常量则不生效
- 类继承(c++ primer plus)课后习题
第一题: // base class class Cd { // represents a CD disk private: char performers[50]; char label[20]; ...
- nginx二进制安装脚本
#!/bin/bash NGINX_FILE=nginx-1.22.0#NGINX_FILE=nginx-1.20.2#NGINX_FILE=nginx-1.18.0NGINX_URL=http:// ...
- redis事务和锁机制、持久化操作RDB/AOF
一.Redis事务介绍 Redis事务是一个单独的隔离操作 :事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断.Redis事务的主要作用就是串联多个 ...
- Linux用户管理2
passwd给用户修改密码 用户自己给自己设置密码直接passwd root用户给普通用户设置密码passwd 用户名 --stdin从标准输入获取信息 echo "1" | pa ...
- JavaScript的Object.defineProperty( )方法
Object.defineProperty方法可以在一个对象上定义一个新的属性,或者修改该对象原有的属性,并返回该对象. 基础的语法格式如下: 1 var data = {}//定义一个对象 2 Ob ...