Python+Opencv实现图片与视频互转的完整示例
本文详细介绍如何使用Python结合OpenCV库实现视频与图片的相互转换。内容涵盖环境安装、视频逐帧提取保存为JPG图片,以及将指定文件夹内的图片序列合成为AVI视频文件。代码包含参数设置、路径处理及质量控制,适用于基础图像处理需求。
首先,需要安装OpenCV相关的Python包。
pip install opvencv-python
接下来是具体的实现代码部分。
关于将视频文件转换为图片序列的操作流程如下:
import cv2
cap=cv2.VideoCapture('E:/video/video-02.mp4') # 获取一个视频打开cap
isOpened=cap.isOpened # 判断是否打开
print(isOpened)
fps=cap.get(cv2.CAP_PROP_FPS)
print(fps)
# 获取宽度
width=int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
# 获取高度
height=int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
i=0
while(isOpened):
# 保存前十帧
if i==10:
break
else:
i+=1
(flag,frame)=cap.read() # 读取每一帧,一张图像flag 表明是否读取成果 frame内容
fileName='E:/video/image'+str(i)+'.jpg'
print(fileName)
# flag表示是否成功读图
if flag==True:
# 控制质量
cv2.imwrite(fileName,frame,[cv2.IMWRITE_JPEG_QUALITY,100])
print('end!')
反之,将一系列图片保存并合成为视频文件的逻辑如下:
import os
import cv2
import numpy as np
path = 'E:/video/img'
filelist = os.listdir(path)
#fourcc = cv2.cv.CV_FOURCC('M','J','P','G') #opencv版本是2
fourcc = cv2.VideoWriter_fourcc(*'XVID') #opencv版本是3
fps = 5 # 视频每秒24帧
size = (1920, 1080) # 需要转为视频的图片的尺寸
# 可以使用cv2.resize()进行修改
video = cv2.VideoWriter('E:/video/2.avi', fourcc, fps, size)
# 视频保存在当前目录下
for item in filelist:
if item.endswith('.jpg'):
# 找到路径中所有后缀名为.png的文件,可以更换为.jpg或其它
item = path + item
img = cv2.imread(item)
video.write(img)
video.release()
cv2.destroyAllWindows()
以上即为利用Python和OpenCV实现图片与视频互相转换的完整示例。如需了解更多关于Python处理图片和视频的资料,建议查阅本站其他相关技术文章。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









