图文转视频python_Python图片转视频和视频转图片

1. 视频转图片

import cv2

import math

cap = cv2.VideoCapture('video/MOV_0005.MOV') #加载视频文件

cap_num = cap.get(7) # 获取视频总帧数

cap_width = math.ceil(cap.get(3)) #获取视频帧宽度(横)

cap_height = math.ceil(cap.get(4)) #获取视频帧高度(竖)

cap_fps = math.ceil(cap.get(5)) #获取视频帧率

#得到视频总帧数的位数,比如198帧(三位数),得到3;1989帧(4位数),得到4

cap_count = 0

while cap_num:

cap_count = cap_count+1

cap_num = math.floor(cap_num/10)

fix = '%0'+str(cap_count)+'d' #得到图片保存的前缀,比如001.png,0001.png

cap_cnt = 1

flag, frame = cap.read() #读取图片

while flag:

path = 'video/img_sequ/'+str(fix%cap_cnt)+'.png' #图片保存目录

cv2.imwrite(path,frame)

cap_cnt = cap_cnt+1

flag, frame = cap.read()

cap.release()

2. 图片转视频

import cv2

#保存为avi视频格式,超占内存,每张图片4M,1000张,完完整整的3.5G

fourcc = cv2.VideoWriter_fourcc('I','4','2','0') #视频的格式

#cap_fps是帧率,可以根据随意设置;size要和图片的size一样,但是通过img.shape得到图像的

(height,width,channel),但是此处的size要传的是(width,height),这里一定要注意注意,

不然结果会打不开,提示“无法解码多工传送的流”等.比如通过img.shape得到常用的图片尺寸(1080,1920,3),则size设为(1920,1080)

cap_fps = 30

size = (1920, 1080) #根据自己图片尺寸更改

video = cv2.VideoWriter('results/result.avi',fourcc, cap_fps, size)

#video.write默认保存彩色图,如果是灰度图,则

img_E = cv2.imread('test/0001.png')

img_E = cv2.merge((img_E,img_E,img_E)) #拓展为三通道

video.write(img_E)

#默video.write默认保存彩色图,如果是彩色图,则直接保存

img_E = cv2.imread('test/0001.png')

video.write(img_E)

video.release()

#保存为mp4视频格式,省内存,每张图片4M,1000张,完完整整的才17M大小

fourcc = cv2.VideoWriter_fourcc('m','p','4','v') #视频的格式

cap_fps = 30

size = (cap_width, cap_height)

video = cv2.VideoWriter('results/result.mp4',fourcc, cap_fps, size)

#video.write默认保存彩色图,如果是灰度图,则

img_E = cv2.imread('test/0001.png')

img_E = cv2.merge((img_E,img_E,img_E)) #拓展为三通道

video.write(img_E)

#默video.write默认保存彩色图,如果是彩色图,则直接保存

img_E = cv2.imread('test/0001.png')

video.write(img_E)

video.release()

附录---备用

#如果要转换图像通道

img = img[...,[2,1,0]]

#将现成的大内存avi转换为小内存的mp4文件

from subprocess import call

command = 'ffmpeg -i results/result.avi results/result.mp4'

call(command.split())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值