
# -*- coding: UTF-8 -*-
"""
@项目名称: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 # 帧速率/视频总帧数=时间s,除以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'
# 保存地址,视频格式,播放速读,视频宽、高*'mp4v'
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种写法效果一样)
#文件扩展名:mp4。
cv.VideoWriter_fourcc('m', 'p', '4', 'v')
cv.VideoWriter_fourcc(*'mp4v')
#文件扩展名:avi。未压缩的YUV颜色编码,4:2:0色度子采样。兼容性好,但文件较大。
cv.VideoWriter_fourcc('I','4','2','0')
cv.VideoWriter_fourcc(*'I420')
#文件扩展名:avi。MPEG-1编码类型,随机访问,灵活的帧率、可变的图像尺寸、定义了I-帧、P-帧和B-帧 、运动补偿可跨越多个帧 、半像素精度的运动向量 、量化矩阵、GOF结构 、slice结构 、技术细节、输入视频格式。
cv.VideoWriter_fourcc('P','I','M','1')
cv.VideoWriter_fourcc(*'PIM1')
#文件扩展名:avi。MPEG-4编码类型,视频大小为平均值,MPEG4所需要的空间是MPEG1或M-JPEG的1/10,它对运动物体可以保证有良好的清晰度,间/时间/画质具有可调性。
cv.VideoWriter_fourcc('X','V','I','D')
cv.VideoWriter_fourcc(*'XVID')
#件扩展名:ogv。音频压缩格式,有损压缩,类似于MP3等的音乐格式,兼容性差。
cv.VideoWriter_fourcc('T','H','E','O')
cv.VideoWriter_fourcc(*'THEO')
#文件扩展名为:flv。文件极小、加载速度极快。
cv.VideoWriter_fourcc('F','L','V','1')
cv.VideoWriter_fourcc(*'FLV1')
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)