57. 视频分解与合成

2019-11-13  本文已影响0人  十里江城

本文开始机器学习部分知识的解释,以下为视频分解图片与图片合成视频的操作。

视频分解

步骤:

import cv2

# 1 捕获视频并检测打开与否
cap = cv2.VideoCapture('1.mp4')
# 检测是否打开
isOpened = cap.isOpened
print('isOpened: ', isOpened)

# 2 获取视频帧率等信息
# 帧率:表示一秒钟可以打开的图片个数
fps = cap.get(cv2.CAP_PROP_FPS)
width = (cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = (cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
print('fps, width, height: ', fps, width, height)

i = 0
while(isOpened):
    # 最多保存十张图片 fps=24
    if i == 30:
        break
    else:
        i += 1
        
    # 3 读取每一帧 flag:是否成功 frame:图片内容
    (flag, frame) = cap.read()
    
    # 4 将图片按序按帧率存为jpg文件   
    # 定义30张图片的文件名
    fileName = 'image' + str(i) + '.jpg'
    print('fileName: ', fileName)
    if flag == True:
        cv2.imwrite(fileName, frame, [cv2.IMWRITE_JPEG_QUALITY, 100])
        
print('end!')

    
    

状态与帧率等信息和分解结果如下:


状态和帧率等信息 分解出的部分图片

视频合成

步骤:

# 图片合成视频
import cv2

# 1 获取图片维度信息
img = cv2.imread('image1.jpg')
imgInfo = img.shape
# 分别表示行(高度) 列(宽度)
size = (imgInfo[1], imgInfo[0]) 
print('size: ', size) 

# 2 创建视频写入对象
# 视频写入对象 参数:  编码器: cv2.VideoWriter_fourcc(*'XVID')  帧率:25  文件大小: size  
videoWriter = cv2.VideoWriter('new1.mp4', cv2.VideoWriter_fourcc(*'XVID'), 25, size)

# 3 将读入的图片写入视频
for i in range(1, 31):
    # 读入图片     
    img = cv2.imread('image' + str(i) + '.jpg')
    # 视频写入
    videoWriter.write(img) 
    
# 4 释放videoWriter结束视频制作
videoWriter.release()

print('end!')
                           

图片维度信息如下:


image.png

创建的视频信息如下,其中维度与上述读入原始图片的维度一致:


image.png
上一篇下一篇

猜你喜欢

热点阅读