1、实现功能:可以用滑动条控制播放视频的进度。视频其实是由一帧一帧的图像决定的,通过播放的起始帧数,我们就可以控制视频的播放进度。对于每一帧图像进行操作,我们就可以对视频进行处理。
#视屏滑动条的播放
import cv2 as cv
import numpy as np
import os
#滑动块变化时的调用的处理函数,x为滑动块的值
def on_change(x):
print(x)
#设置播放的帧数
cap.set(cv.CAP_PROP_POS_FRAMES, x)
''' 定义一个捕获视频的类'''
cap=cv.VideoCapture("output.avi")
cv.namedWindow("Video",cv.WINDOW_AUTOSIZE)
#获取视频的总帧数,视频太短可能会出现0帧的情况(导致报错)
frame_count=cap.get(cv.CAP_PROP_FRAME_COUNT)
#创建滑动条
cv.createTrackbar("Frame","Video",0,int(frame_count),on_change)
#获取视频的fps
Fps = cap.get(cv.CAP_PROP_FPS)
print("fps:",Fps,frame_count)
while(True):
framePos = cap.get(cv.CAP_PROP_POS_FRAMES)
cv.setTrackbarPos("Frame","Video",int(framePos))
ret,frame=cap.read()
if ret==True:
str_fps="fps:{0}".format(Fps)
#print(str_fps)
#在视频上显示fps
cv.putText(frame,str_fps, (5, 30), cv.FONT_HERSHEY_COMPLEX_SMALL, 1, (255,255,255), 2)
cv.imshow("Video",frame)
cv.waitKey(int(1000/Fps))
else:
break
print("ok")
cv.destroyAllWindows()