pre_do.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. '''
  4. @Author : liuyuqi
  5. @Contact : liuyuqi.gov@msn.cn
  6. @Time : 2020/02/17 16:08:13
  7. @Version : 1.0
  8. @License : (C)Copyright 2019
  9. @Desc : 预处理
  10. '''
  11. import cv2
  12. videoName = r'videos/大象解说《血战钢锯岭》.mp4'
  13. # 截图
  14. videoCap=cv2.VideoCapture(videoName)
  15. # 帧频
  16. fps = videoCap.get(cv2.CAP_PROP_FPS)
  17. # 视频总帧数
  18. total_frames = int(videoCap.get(cv2.CAP_PROP_FRAME_COUNT))
  19. # 图像尺寸
  20. image_size = (int(videoCap.get(cv2.CAP_PROP_FRAME_HEIGHT)),
  21. int(videoCap.get(cv2.CAP_PROP_FRAME_WIDTH)))
  22. print(fps)
  23. print(total_frames)
  24. print(image_size)
  25. for i in range(2818):
  26. sucess, frame = videoCap.read()
  27. # sucess,frame=videoCap.read(2818)
  28. from PIL import Image
  29. # img = Image.fromarray(frame)
  30. # img.show()
  31. ## 确定字幕范围
  32. im = frame[:, :, 0]
  33. im = im[325:640, :]
  34. img = Image.fromarray(im)
  35. # img.show()
  36. # 二值化
  37. thresh = 150
  38. _, im = cv2.threshold(im, thresh, 255, cv2.THRESH_BINARY)
  39. img = Image.fromarray(im)
  40. img.show()
  41. # 计算两张图像间每个像素点的平方误差之和的平均值百分比:当 e > 1 时,图像才有字幕。
  42. # 接着计算相同字幕和不同字幕图像直接的误差 e: 误差 e > 1 时,字幕发生切换。
  43. # 为了方便文字识别,将 20 句字幕组合成一张图片。完整的提取字幕的代码如下: