Opencv实现视频倒放

import cv2
import argparse

parser=argparse.ArgumentParser('视频倒放')
parser.add_argument('videoPath',type=str,help='The path of video th input!')
parser.add_argument('flag',type=bool,help='True: save the reversed video; False: don\'t save the reversed video')
parser.add_argument('--outPath',type=str,help='The path to save the reversed video!',default=None)
args=parser.parse_args()

capture=cv2.VideoCapture(args.videoPath)
if capture.isOpened()==False:
    print('Failed to open the video!')
    capture.release()
    exit(1)

frameW=capture.get(cv2.CAP_PROP_FRAME_WIDTH)
frameH=capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
frameN=capture.get(cv2.CAP_PROP_FRAME_COUNT)

frameIndex=frameN-1
writer=None
if args.flag:
    # 保存倒放的视频文件
    fourcc=capture.get(cv2.CAP_PROP_FOURCC)
    fps=capture.get(cv2.CAP_PROP_FPS)
    outPath=args.outPath
    if not(outPath):
        inputPath=args.videoPath
        index=inputPath.rindex('.')
        outPath=inputPath[0:index]+'_reverse'+inputPath[index:]
    writer=cv2.VideoWriter(outPath,int(fourcc),int(fps),(int(frameW),int(frameH)),True)
while capture.isOpened():
    if frameIndex<0:
        break
    capture.set(cv2.CAP_PROP_POS_FRAMES,frameIndex)
    flag,frame=capture.read()
    if flag:
        cv2.imshow('Current frame of video',frame)
        if writer:
            writer.write(frame)
        key=cv2.waitKey(10)
        if key==81 or key==113:
            break
        frameIndex-=1
    else:
        break
if writer:
    writer.release()
capture.release()
cv2.destroyAllWindows()

调用方式

  • 保存结果
python  VideoReverse.py inputVideo True outPath
  • 不保存结果
python VideoReverse.py inputVideo False
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值