文件目录:
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!")