视频编码
fourcc:全名Four-Character Codes,四字符代码,该编码由四个字符组成
cv2.VideoWriter_fourcc('M','J','P','G')
cv2.VideoWriter_fourcc(*'MJPG')
通常写法有上述两种形式
支持avi格式的有:
I420,YUV编码,视频格式为.avi
PIM1,MPEG-1编码,视频格式为.avi
XVID,MPEG-4编码,视频格式为.avi
其他编码器
THEO,Ogg Vorbis,视频格式为.ogv
FLV1,Flash视频,视频格式为.flv
AVC1,H264编码
DIV3,MPEG-4.3编码
DIVX,MPEG-4编码
MP42,MPEG-4.2编码
MJPG,motion-jpeg编码
U263,H263编码
I263,H263I编码
支持mp4格式的有:
MP4V,需要注意的是,英文要么全部大写,要么全部小写
HEVC > H.264 > MPEG4 > H.263 > MPEG2
图片转视频
import cv2
from cv2 import VideoWriter, VideoWriter_fourcc, imread, resize
import os
from PIL import Image
def Pic2Video(imgPath, videoPath):
images = os.listdir(imgPath)
fps = 25 # 每秒25帧数
fourcc = VideoWriter_fourcc(*"MP42")
image = Image.open(imgPath + images[0])
videoWriter = cv2.VideoWriter(videoPath, fourcc, fps, image.size)
for im_name in range(len(images)):
frame = cv2.imread(imgPath + images[im_name]) # 这里的路径只能是英文路径
# frame = cv2.imdecode(np.fromfile((imgPath + images[im_name]), dtype=np.uint8), 1) # 此句话的路径可以为中文路径
print(im_name)
videoWriter.write(frame)
print("图片转视频结束!")
videoWriter.release()
cv2.destroyAllWindows()
imgPath = "./jpg/" # 读取图片路径
videoPath = "./out/BBB.mp4" # 保存视频路径
Pic2Video(imgPath, videoPath)