python 图像和视频互相转换

python 图像和视频互相转换

预备条件

创建两个文件夹,将视频放在video文件夹里
我拍的视频,视频链接
提取码:t1zj
在这里插入图片描述

视频转图像

import cv2
import os

def video2image():
	cap = cv2.VideoCapture("video/test.mp4")  # 
	count = 1
	while True:
		success, frame = cap.read()
		if success == False:
			break
		cv2.imwrite("images/%d.jpg"%count, frame)
		count +=1

图像转视频

MP4格式

import cv2
import os

def image2video():
	# 得到图像路径
	files = os.listdir("images/")
	# 对图像排序
	files.sort(key = lambda x: int(x.split(".")[0]))
	# 获取图像宽高
	h, w, _ = cv2.imread("images/" + files[0]).shape	
	# 设置帧数
	fps = 30
	vid = []
	# 保存视频路径和名称
	save_path = "video/video.mp4"		# 保存视频路径和名称 MP4格式

	# 准备写入视频
	vid = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))

	# 写入
	for file in files:
		img = cv2.imread("images/" + file)
		vid.write(img)

AVI格式

import cv2
import os

def image2video():
	# 得到图像路径
	files = os.listdir("images/")
	# 对图像排序
	files.sort(key = lambda x: int(x.split(".")[0]))
	# 获取图像宽高
	h, w, _ = cv2.imread("images/" + files[0]).shape	
	# 设置帧数
	fps = 30
	vid = []
	# 保存视频路径和名称
	save_path = "video/video.avi"	# 保存视频路径和名称 av格式

	# 准备写入视频    两种 不清楚具体区别
	vid = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'xvid'), fps, (w, h))
	# vid = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'i420'), fps, (w, h))
	
	# 写入
	for file in files:
		img = cv2.imread("images/" + file)
		vid.write(img)

完整代码

import cv2
import os

def video2image():
	cap = cv2.VideoCapture("video/test.mp4")  
	count = 1
	while True:
		success, frame = cap.read()
		if success == False:
			break
		cv2.imwrite("images/%d.jpg"%count, frame)
		count +=1


def image2video():
	# 得到图像路径
	files = os.listdir("images/")
	# 对图像排序
	files.sort(key = lambda x: int(x.split(".")[0]))
	# 获取图像宽高
	h, w, _ = cv2.imread("images/" + files[0]).shape	
	# 设置帧数
	fps = 30

	vid = []
	'''
	设置要保存的格式
	mp4:
		mp4v 
	avi:
		xvid
		i420
	'''

	# 保存视频路径和名称
	#save_path = "video/video.mp4"		# 保存视频路径和名称 MP4格式
	save_path = "video/video.avi"		# 保存视频路径和名称 av格式

	# 准备写入视频
	vid = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (w, h))
	# vid = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'xvid'), fps, (w, h))
	# vid = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'i420'), fps, (w, h))
	
	# 写入
	for file in files:
		img = cv2.imread("images/" + file)
		vid.write(img)

if __name__ == '__main__':
	print("start...")
	video2image()
	image2video()
	print("OK!")
  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值