当前位置:   article > 正文

python-opencv:在视频中显示进度条等opencv快速入门_python tk opencv视频进度条

python tk opencv视频进度条

上期回顾

上期我们主要是针对在视频中选择实时的fps,这期主要是讲讲用opencv显示进度条。这期也是在上期的基础上添加的代码

 

进度条

下面代码是上期代码中增加的效果

  1. # coding=gbk
  2. import time
  3. import cv2
  4. def nothing(emp):
  5. pass
  6. #设置窗口名称
  7. cv2.namedWindow('frame')
  8. cap = cv2.VideoCapture("D:\\jc\\Myself\\video\\Hacker_glasses_07_Videvo.mov") # 读取文件
  9. start_time = time.time()
  10. #用于记录帧数
  11. counter = 0
  12. # 获取视频宽度
  13. frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
  14. # 获取视频高度
  15. frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
  16. #视频平均帧率
  17. fps = cap.get(cv2.CAP_PROP_FPS)
  18. # 获取视频帧数
  19. frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
  20. loop_flag = 0
  21. pos = 0
  22. # 新建一个滑动条
  23. cv2.createTrackbar('time', 'frame', 0, frames, nothing)
  24. while (True):
  25. if loop_flag == pos:
  26. loop_flag = loop_flag + 1
  27. cv2.setTrackbarPos('time', 'frame', loop_flag)
  28. else:
  29. pos = cv2.getTrackbarPos('time', 'frame')
  30. loop_flag = pos
  31. cap.set(cv2.CAP_PROP_POS_FRAMES, pos)
  32. ret, frame = cap.read()
  33. # 键盘输入空格暂停,输入q退出
  34. key = cv2.waitKey(1) & 0xff
  35. if key == ord(" "):
  36. cv2.waitKey(0)
  37. if key == ord("q"):
  38. break
  39. counter += 1 # 计算帧数
  40. if (time.time() - start_time) != 0: # 实时显示帧数
  41. cv2.putText(frame, "FPS {0}".format(float('%.1f' % (counter / (time.time() - start_time)))), (500, 50),
  42. cv2.FONT_HERSHEY_SIMPLEX, 2, (0, 0, 255),
  43. 3)
  44. src = cv2.resize(frame, (frame_width // 2, frame_height // 2), interpolation=cv2.INTER_CUBIC) # 窗口大小
  45. cv2.imshow('frame', src)
  46. print("FPS: ", counter / (time.time() - start_time))
  47. counter = 0
  48. start_time = time.time()
  49. time.sleep(1 / fps) # 按原帧率播放
  50. cap.release()
  51. cv2.destroyAllWindows()

下面代码是单独创建进度条的效果

  1. import cv2
  2. def nothing(emp):
  3. pass
  4. video = 'D:\\jc\\Myself\\video\\Hacker_glasses_07_Videvo.mov'
  5. cv2.namedWindow('video')
  6. cap = cv2.VideoCapture(video)
  7. frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
  8. loop_flag = 0
  9. pos = 0
  10. cv2.createTrackbar('time', 'video', 0, frames, nothing)
  11. while 1:
  12. if loop_flag == pos:
  13. loop_flag = loop_flag + 1
  14. cv2.setTrackbarPos('time', 'video', loop_flag)
  15. else:
  16. pos = cv2.getTrackbarPos('time', 'video')
  17. loop_flag = pos
  18. cap.set(cv2.CAP_PROP_POS_FRAMES, pos)
  19. ret, img = cap.read()
  20. cv2.imshow('video', img)
  21. if cv2.waitKey(1) & loop_flag == frames:
  22. break
  23. cap.release()
  24. cv2.destroyAllWindows()

 

讲解

在我们代码中需要注意,最开始创建窗口时的名称,以及创建滑动条的名称、展示出来的名称都要保持一致。

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/130271
推荐阅读
相关标签
  

闽ICP备14008679号