最近在做一些视频方面的相关实验,在OpenCV中我们可以用现实窗口来控制图像处理前后的效果对比,同理,对于视频处理来说也可以进行相关的操作,让处理前后的两个视频同时播放进行处理效果前后对比。对于视频处理来说,将视频中的每一帧提取出来然后对这每一帧分别进行处理,然后再把每一帧合并成视频进行保存。
对于处理完周后保存的视频文件可以通过下面的代码同时对视频进行加载和播放实现效果对比,可以实现N个视频文件的左右拼接和上下拼接,具体代码如下:
import cv2
import numpy as np
##选择需要同时播放的两个视频路径
videoLeftUp = cv2.VideoCapture('xxx.mp4')
videoRightUp = cv2.VideoCapture('xxx.mp4')
width = (int(videoLeftUp.get(cv2.CAP_PROP_FRAME_WIDTH)))
height = (int(videoLeftUp.get(cv2.CAP_PROP_FRAME_HEIGHT)))
while (videoLeftUp.isOpened()):
retLeftUp, frameLeftUp = videoLeftUp.read()
retRightUp, frameRightUp = videoRightUp.read()
frameLeftUp = cv2.resize(frameLeftUp, (int(width), int(height)), interpolation=cv2.INTER_CUBIC)
frameRightUp = cv2.resize(frameRightUp, (int(width), int(height)), interpolation=cv2.INTER_CUBIC)
# 将两个视频窗口左右进行拼接
frameUp = np.hstack((frameLeftUp, frameRightUp))
# 将两个视频窗口上下进行拼接
# frameUp = np.hstack((frameLeftUp, frameRightUp))
# frameDown = np.hstack((frameLeftDown, frameRightDown))
# frame = np.vstack((frameUp, frameDown))
cv2.imshow('frame', frameUp)
# 设置等待时间(ms),在每一个等待时间中处理当前帧
key = cv2.waitKey(3)
if int(key) == 113:
break
# 处理完之后一定要释放资源
videoLeftUp.release()
videoRightUp.release()