视频与图片之间的相互转换

文件目录:
在这里插入图片描述

1 视频生成图片

# 视频分解图片

import cv2
import os

capture = cv2.VideoCapture("1.mp4")
isOpened = capture.isOpened()  # # 判断是否打开
print(isOpened)  # True
fps = capture.get(cv2.CAP_PROP_FPS)  # 帧率
width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
print(fps, width, height)
print(round(fps))  # 四舍五入
i = 0
while isOpened:
    if i >= 100:
        break
    else:
        i = i + 1
    ret, frame = capture.read()  # 读取每一张 flag frame
    if not os.path.exists("image"):
        os.mkdir("image")
    filename = os.path.join("image", str(i) + ".jpg")
    if ret == True:
        cv2.imwrite(filename, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
        #  设置图片格式为.jpeg或者.jpg的图片质量,其值为0---100(数值越大质量越高),默认95
print("end!")

2 图片生成视频

# 生成avi格式
import cv2
import os

img = cv2.imread("image/1.jpg")
videoName = "2.avi"
imgShape = img.shape
size = (imgShape[1], imgShape[0])
print(size)
fourcc = cv2.VideoWriter_fourcc('M', 'J', 'P', 'G')
videoWrite = cv2.VideoWriter(videoName, fourcc, 5, size)  # 100张图片,fps为5,则生成20秒的视频
# videoName: 写入对象;-1表示支持的编码器;5表示5帧图像(帧率);size图片大小(宽,高)
for i in range(100):
    imgName = os.path.join("image", str(i+1) + ".jpg")  # 注意这个地方是i+1,不然读取0.jpg不行
    img = cv2.imread(imgName)
    videoWrite.write(img)
videoWrite.release()
print("end!")


# 生成mp4格式(avi视频比mp4视频大)
import cv2
import os

img = cv2.imread("image/1.jpg")
videoName = "2.mp4"
imgShape = img.shape
size = (imgShape[1], imgShape[0])
print(size)
fourcc = cv2.VideoWriter_fourcc(*'DIVX')
videoWrite = cv2.VideoWriter(videoName, fourcc, 5, size)
for i in range(100):
    imgName = os.path.join("image", str(i+1) + ".jpg")
    img = cv2.imread(imgName)
    videoWrite.write(img)
videoWrite.release()
print("end!")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值