dragonSwing commited on
Commit
54696a3
1 Parent(s): 878be3f

Update app

Browse files
Files changed (6) hide show
  1. app.py +3 -3
  2. config.py +1 -1
  3. frame_differencing.py +3 -4
  4. requirements.txt +1 -0
  5. utils.py +13 -9
  6. video_2_slides.py +2 -2
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import gradio as gr
2
  import os
3
- import glob
4
  import validators
 
5
  from config import *
6
  from download_video import download_video
7
  from bg_modeling import capture_slides_bg_modeling
@@ -48,11 +48,11 @@ def process(
48
  output_dir_path, hash_size, hash_func, hash_queue_len, diff_threshold
49
  )
50
 
51
- pdf_path = convert_slides_to_pdf(video_path, output_dir_path)
52
 
53
  # Remove unneccessary files
54
  os.remove(video_path)
55
- for image_path in glob.glob(f"{output_dir_path}/*.jpg"):
56
  os.remove(image_path)
57
  return pdf_path
58
 
 
1
  import gradio as gr
2
  import os
 
3
  import validators
4
+ from imutils import paths
5
  from config import *
6
  from download_video import download_video
7
  from bg_modeling import capture_slides_bg_modeling
 
48
  output_dir_path, hash_size, hash_func, hash_queue_len, diff_threshold
49
  )
50
 
51
+ pdf_path = convert_slides_to_pdf(output_dir_path)
52
 
53
  # Remove unneccessary files
54
  os.remove(video_path)
55
+ for image_path in paths.list_images(output_dir_path):
56
  os.remove(image_path)
57
  return pdf_path
58
 
config.py CHANGED
@@ -4,7 +4,7 @@ import imagehash
4
 
5
  DOWNLOAD_DIR = "downloads"
6
 
7
- FRAME_BUFFER_HISTORY = 15 # Length of the frame buffer history to model background.
8
  DEC_THRESH = (
9
  0.75 # Threshold value, above which it is marked foreground, else background.
10
  )
 
4
 
5
  DOWNLOAD_DIR = "downloads"
6
 
7
+ FRAME_BUFFER_HISTORY = 10 # Length of the frame buffer history to model background.
8
  DEC_THRESH = (
9
  0.75 # Threshold value, above which it is marked foreground, else background.
10
  )
frame_differencing.py CHANGED
@@ -40,7 +40,7 @@ def capture_slides_frame_diff(
40
 
41
  screenshots_count += 1
42
 
43
- filename = f"{screenshots_count:03}.lpg"
44
  out_file_path = os.path.join(output_dir_path, filename)
45
  print(f"Saving file at: {out_file_path}")
46
 
@@ -68,7 +68,6 @@ def capture_slides_frame_diff(
68
 
69
  if p_non_zero >= MIN_PERCENT_THRESH and not capture_frame:
70
  capture_frame = True
71
-
72
  elif capture_frame:
73
  frame_elapsed += 1
74
 
@@ -78,11 +77,11 @@ def capture_slides_frame_diff(
78
 
79
  screenshots_count += 1
80
 
81
- filename = f"{screenshots_count:03}.png"
82
  out_file_path = os.path.join(output_dir_path, filename)
83
  print(f"Saving file at: {out_file_path}")
84
 
85
- cv2.imwrite(out_file_path, frame)
86
 
87
  prev_frame = curr_frame
88
 
 
40
 
41
  screenshots_count += 1
42
 
43
+ filename = f"{screenshots_count:03}.jpg"
44
  out_file_path = os.path.join(output_dir_path, filename)
45
  print(f"Saving file at: {out_file_path}")
46
 
 
68
 
69
  if p_non_zero >= MIN_PERCENT_THRESH and not capture_frame:
70
  capture_frame = True
 
71
  elif capture_frame:
72
  frame_elapsed += 1
73
 
 
77
 
78
  screenshots_count += 1
79
 
80
+ filename = f"{screenshots_count:03}.jpg"
81
  out_file_path = os.path.join(output_dir_path, filename)
82
  print(f"Saving file at: {out_file_path}")
83
 
84
+ cv2.imwrite(out_file_path, frame, [cv2.IMWRITE_JPEG_QUALITY, 75])
85
 
86
  prev_frame = curr_frame
87
 
requirements.txt CHANGED
@@ -4,6 +4,7 @@ Pillow
4
  scipy
5
  six
6
  ImageHash
 
7
  img2pdf
8
  pytube
9
  validators
 
4
  scipy
5
  six
6
  ImageHash
7
+ imutils
8
  img2pdf
9
  pytube
10
  validators
utils.py CHANGED
@@ -3,7 +3,7 @@ import re
3
  import cv2
4
  import shutil
5
  import img2pdf
6
- import glob
7
 
8
  # PIL can also be used to convert the image set into PDFs.
9
  # However, using PIL requires opening each of the images in the set.
@@ -46,17 +46,21 @@ def create_output_directory(video_path, output_path, type_bgsub):
46
  return output_dir_path
47
 
48
 
49
- def convert_slides_to_pdf(video_path, output_path):
50
- pdf_file_name = video_path.rsplit(os.sep)[-1].split(".")[0] + ".pdf"
51
- output_pdf_path = os.path.join(output_path, pdf_file_name)
 
 
 
 
 
 
52
 
53
- print("Output PDF Path:", output_pdf_path)
54
  print("Converting captured slide images to PDF...")
55
-
56
- with open(output_pdf_path, "wb") as f:
57
- f.write(img2pdf.convert(sorted(glob.glob(f"{output_path}/*.jpg"))))
58
 
59
  print("PDF Created!")
60
  print("***" * 10, "\n")
61
 
62
- return output_pdf_path
 
3
  import cv2
4
  import shutil
5
  import img2pdf
6
+ from imutils import paths
7
 
8
  # PIL can also be used to convert the image set into PDFs.
9
  # However, using PIL requires opening each of the images in the set.
 
46
  return output_dir_path
47
 
48
 
49
+ def convert_slides_to_pdf(img_dir, output_path=None):
50
+ if not os.path.isdir(img_dir):
51
+ print("The image directory doesn't exist!")
52
+ return
53
+
54
+ if output_path == None:
55
+ pdf_file_name = os.path.basename(img_dir) + ".pdf"
56
+ output_path = os.path.join(img_dir, pdf_file_name)
57
+ print("Output PDF Path:", output_path)
58
 
 
59
  print("Converting captured slide images to PDF...")
60
+ with open(output_path, "wb") as f:
61
+ f.write(img2pdf.convert(sorted(paths.list_images(img_dir))))
 
62
 
63
  print("PDF Created!")
64
  print("***" * 10, "\n")
65
 
66
+ return output_path
video_2_slides.py CHANGED
@@ -81,7 +81,7 @@ if __name__ == "__main__":
81
  )
82
  queue_len = HASH_BUFFER_HISTORY
83
 
84
- video_path = args.video_file_path
85
  output_dir_path = args.out_dir
86
  type_bg_sub = args.type
87
  temp_file = False
@@ -128,7 +128,7 @@ if __name__ == "__main__":
128
  )
129
 
130
  if args.convert_to_pdf:
131
- convert_slides_to_pdf(video_path, output_dir_path)
132
 
133
  # if temp_file:
134
  # os.remove(video_path)
 
81
  )
82
  queue_len = HASH_BUFFER_HISTORY
83
 
84
+ video_path = args.video_path
85
  output_dir_path = args.out_dir
86
  type_bg_sub = args.type
87
  temp_file = False
 
128
  )
129
 
130
  if args.convert_to_pdf:
131
+ convert_slides_to_pdf(output_dir_path)
132
 
133
  # if temp_file:
134
  # os.remove(video_path)