视频转图片
"""
@项目名称:PlayerCharOCR.py
@作 者:陆地起飞全靠浪
@创建日期:2022-03-11-15:24
"""
import cv2 as cv
def test_video_2_img():
vedio_path = '单视频.mp4'
imgDir = '.'.join(vedio_path.split('.')[0:-1])
if not os.path.exists(imgDir):
os.mkdir(imgDir)
vc = cv.VideoCapture(vedio_path)
c = 0
if vc.isOpened():
rval, frame = vc.read()
rate = round(vc.get(5))
frame_number = vc.get(7)
duration = frame_number / rate / 60
else:
print('未能打开视频'.format(vedio_path))
rval = False
space_num = 0.5
while rval:
c += 1
rval, frame = vc.read()
if c % int(rate * space_num) != 0:
continue
try:
if frame is None:
continue
cv.imwrite(imgDir + '/' + str(time.time()) + '.jpg', frame)
cv.waitKey(1)
except:
print('未能保存图片:', imgDir + '/' + str(c) + '.jpg')
vc.release()
图片转视频
def test_img_2_video_opencv():
width, height = 960, 544
img_dir = 'Img'
save_dir = 'img_2_video.mp4'
fourcc = cv.VideoWriter_fourcc(*'mp4v')
video_out = cv.VideoWriter(save_dir, fourcc, fps=25, frameSize=(width, height))
for filename in glob.glob(f'{img_dir}/*'):
img_np = cv.imread(filename)
img_r = cv.resize(img_np, (width, height)).astype('uint8')
video_out.write(img_r)
video_out.release()
关键配置参数(2种写法效果一样)
cv.VideoWriter_fourcc('m', 'p', '4', 'v')
cv.VideoWriter_fourcc(*'mp4v')
cv.VideoWriter_fourcc('I','4','2','0')
cv.VideoWriter_fourcc(*'I420')
cv.VideoWriter_fourcc('P','I','M','1')
cv.VideoWriter_fourcc(*'PIM1')
cv.VideoWriter_fourcc('X','V','I','D')
cv.VideoWriter_fourcc(*'XVID')
cv.VideoWriter_fourcc('T','H','E','O')
cv.VideoWriter_fourcc(*'THEO')
cv.VideoWriter_fourcc('F','L','V','1')
cv.VideoWriter_fourcc(*'FLV1')