opencv 视频处理

您所在的位置:网站首页 分析本人教学方面的优势和劣势 opencv 视频处理

opencv 视频处理

2023-11-14 02:57| 来源: 网络整理| 查看: 265

 

  若视频读取时出现问题如:[mov,mp4,m4a,3gp,3g2,mj2 @ 0x563f33f78780] moov atom not found, VIDIOC_REQBUFS Inappropriate ioctl for device ,很可能是视频文件本身有问题,条件允许的话,重新生成视频就能解决问题。

1. 读取视频,并抽帧

cap = cv2.VideoCapture(video_path) if not cap.isOpened(): print('the video does not exist.') return False h, w = 256, 256 fps = int(cap.get(cv2.CAP_PROP_FPS)) ret, frame = cap.read() while ret: img = np.array(cv2.resize(img, (w, h))) # resize ret, frame = cap.read() cap.release() print('video read ended.')

 

* 每隔 k 帧抽帧的逻辑 

f_No = 0 ret = cap.grab() while ret: if 0 == f_No%k: # here, check the frame number that grabbed last time ret, frame = cap.retrieve() # if condition satisfied, retrieve the frame that last grabbed     ... ret = cap.grab()  # grab every interation f_No += 1

 

 

2. 从图片集中合成视频

# 1. 'save_path' is path to save generated video, recommond to end with '.mp4'(format); 2. set the fourcc format as 'mp4v' (suit with '.mp4') video = cv2.VideoWriter(save_path, cv2.VideoWriter_fourcc(*'mp4v'), fps, (width, height)) for img in frames:      # frames is of type list; frame in frames is object that same to object read by cv2.imread(), BGR video.write(img ) video.release() frames.clear()

 * 这种合成方式是有损的,读取的帧数据和源图像的数据间有差别, 参考stackoverflow,或许可以用 'png '的编码格式;但更推荐使用ffmpeg合成视频,最稳当的为:图片无损保存为png格式,从png图片用ffmpeg生成无损视频,参考

  可以使用的部分编码格式    ——参考博客

cv2.VideoWriter_fourcc(*'X264'), 该参数是较新的MPEG-4编码,产生的文件较小,文件扩展名应为.mp4 cv2.VideoWriter_fourcc(*'PIMI'), 该参数是较旧的MPEG-1编码,文件名后缀为.avi cv2.VideoWriter_fourcc(*'MP42'), 该参数是MPEG-2编码,产生的文件不会特别大,文件名后缀为.avi cv2.VideoWriter_fourcc(*'DIV3'), 该参数是MPEG-3编码,产生的文件不会特别大,文件名后缀为.avi cv2.VideoWriter_fourcc(*'DIVX'), 该参数是MPEG-4编码,产生的文件不会特别大,文件名后缀为.avi cv2.VideoWriter_fourcc(*'XVID'), 该参数是较旧的MPEG-4编码,产生的文件不会特别大,文件名后缀为.avi cv2.VideoWriter_fourcc(*'MP4V'), 该参数也是较旧的MPEG-4编码,产生的文件不会特别大,文件扩展名应为.m4v cv2.VideoWriter_fourcc(*'THEO'), 该参数是Ogg Vorbis,产生的文件相对较大,文件名后缀为.ogv cv2.VideoWriter_fourcc(*'FLV1'), 该参数是Flash视频,产生的文件相对较大,文件名后缀为.flv cv2.VideoWriter_fourcc(*'MJPG'), 该参数是motion-jpeg编码,产生的文件较大,文件名后缀为.avi cv2.VideoWriter_fourcc(*'I420'), 该参数是未压缩的YUV编码,4:2:0色度子采样,这种编码广泛兼容,但会产生特别大的文件,文件扩展名应为.avi

 



【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3