├── .gitignore ├── 1. Camera Calibration ├── 01.Overview _ Camera Calibration.pdf ├── 02.Linear Camera Model _ Camera Calibration.pdf ├── 03.Camera Calibration _ Camera Calibration.pdf ├── 04.Intrinsic and Extrinsic Matrices _ Camera Calibration.pdf └── 05.Simple Stereo _ Camera Calibration.pdf ├── 2. Uncalibrated Stereo ├── 06.Overview _ Uncalibrated Stereo.pdf ├── 07.Problem of Uncalibrated Stereo _ Uncalibrated Stereo.pdf ├── 08.Epipolar Geometry _ Uncalibrated Stereo.pdf ├── 09.Stereo Vision in Nature _ Uncalibrated Stereo.pdf ├── 10.Estimating Fundamental Matrix _ Uncalibrated Stereo.pdf ├── 11.Finding Correspondences _ Uncalibrated Stereo.pdf └── 12.Computing Depth _ Uncalibrated Stereo.pdf ├── 3. Optical Flow ├── 01.Overview _ Optical Flow.pdf ├── 02.Motion Field and Optical Flow _ Optical Flow.pdf ├── 03.Optical Flow Constraint Equation _ Optical Flow.pdf ├── 04.Lucas-Kanade Method _ Optical Flow.pdf ├── 05.Coarse-to-Fine Flow Estimation _ Optical Flow.pdf └── 06.Application of Optical Flow _ Optical Flow.pdf ├── 4. Structure from Motion ├── 07.Overview _ Structure from Motion.pdf ├── 08.Structure from Motion Problem _ Structure from Motion.pdf ├── 09.Observation Matrix _ Structure from Motion.pdf ├── 10.Rank of Observation Matrix _ Structure from Motion.pdf └── 11.Tomasi-Kanade Factorization _ Structure from Motion.pdf ├── README.md ├── input └── .gitignore ├── log.txt ├── output └── .gitignore ├── requirements.txt ├── video2pdfslides.py └── video2pdfslides_for_multiple_vids.py /.gitignore: -------------------------------------------------------------------------------- 1 | run_for_all.sh 2 | temp 3 | test.py 4 | 5. Object Tracking -------------------------------------------------------------------------------- /1. Camera Calibration/01.Overview _ Camera Calibration.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/1. Camera Calibration/01.Overview _ Camera Calibration.pdf -------------------------------------------------------------------------------- /1. Camera Calibration/02.Linear Camera Model _ Camera Calibration.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/1. Camera Calibration/02.Linear Camera Model _ Camera Calibration.pdf -------------------------------------------------------------------------------- /1. Camera Calibration/03.Camera Calibration _ Camera Calibration.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/1. Camera Calibration/03.Camera Calibration _ Camera Calibration.pdf -------------------------------------------------------------------------------- /1. Camera Calibration/04.Intrinsic and Extrinsic Matrices _ Camera Calibration.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/1. Camera Calibration/04.Intrinsic and Extrinsic Matrices _ Camera Calibration.pdf -------------------------------------------------------------------------------- /1. Camera Calibration/05.Simple Stereo _ Camera Calibration.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/1. Camera Calibration/05.Simple Stereo _ Camera Calibration.pdf -------------------------------------------------------------------------------- /2. Uncalibrated Stereo/06.Overview _ Uncalibrated Stereo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/2. Uncalibrated Stereo/06.Overview _ Uncalibrated Stereo.pdf -------------------------------------------------------------------------------- /2. Uncalibrated Stereo/07.Problem of Uncalibrated Stereo _ Uncalibrated Stereo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/2. Uncalibrated Stereo/07.Problem of Uncalibrated Stereo _ Uncalibrated Stereo.pdf -------------------------------------------------------------------------------- /2. Uncalibrated Stereo/08.Epipolar Geometry _ Uncalibrated Stereo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/2. Uncalibrated Stereo/08.Epipolar Geometry _ Uncalibrated Stereo.pdf -------------------------------------------------------------------------------- /2. Uncalibrated Stereo/09.Stereo Vision in Nature _ Uncalibrated Stereo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/2. Uncalibrated Stereo/09.Stereo Vision in Nature _ Uncalibrated Stereo.pdf -------------------------------------------------------------------------------- /2. Uncalibrated Stereo/10.Estimating Fundamental Matrix _ Uncalibrated Stereo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/2. Uncalibrated Stereo/10.Estimating Fundamental Matrix _ Uncalibrated Stereo.pdf -------------------------------------------------------------------------------- /2. Uncalibrated Stereo/11.Finding Correspondences _ Uncalibrated Stereo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/2. Uncalibrated Stereo/11.Finding Correspondences _ Uncalibrated Stereo.pdf -------------------------------------------------------------------------------- /2. Uncalibrated Stereo/12.Computing Depth _ Uncalibrated Stereo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/2. Uncalibrated Stereo/12.Computing Depth _ Uncalibrated Stereo.pdf -------------------------------------------------------------------------------- /3. Optical Flow/01.Overview _ Optical Flow.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/3. Optical Flow/01.Overview _ Optical Flow.pdf -------------------------------------------------------------------------------- /3. Optical Flow/02.Motion Field and Optical Flow _ Optical Flow.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/3. Optical Flow/02.Motion Field and Optical Flow _ Optical Flow.pdf -------------------------------------------------------------------------------- /3. Optical Flow/03.Optical Flow Constraint Equation _ Optical Flow.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/3. Optical Flow/03.Optical Flow Constraint Equation _ Optical Flow.pdf -------------------------------------------------------------------------------- /3. Optical Flow/04.Lucas-Kanade Method _ Optical Flow.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/3. Optical Flow/04.Lucas-Kanade Method _ Optical Flow.pdf -------------------------------------------------------------------------------- /3. Optical Flow/05.Coarse-to-Fine Flow Estimation _ Optical Flow.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/3. Optical Flow/05.Coarse-to-Fine Flow Estimation _ Optical Flow.pdf -------------------------------------------------------------------------------- /3. Optical Flow/06.Application of Optical Flow _ Optical Flow.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/3. Optical Flow/06.Application of Optical Flow _ Optical Flow.pdf -------------------------------------------------------------------------------- /4. Structure from Motion/07.Overview _ Structure from Motion.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/4. Structure from Motion/07.Overview _ Structure from Motion.pdf -------------------------------------------------------------------------------- /4. Structure from Motion/08.Structure from Motion Problem _ Structure from Motion.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/4. Structure from Motion/08.Structure from Motion Problem _ Structure from Motion.pdf -------------------------------------------------------------------------------- /4. Structure from Motion/09.Observation Matrix _ Structure from Motion.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/4. Structure from Motion/09.Observation Matrix _ Structure from Motion.pdf -------------------------------------------------------------------------------- /4. Structure from Motion/10.Rank of Observation Matrix _ Structure from Motion.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/4. Structure from Motion/10.Rank of Observation Matrix _ Structure from Motion.pdf -------------------------------------------------------------------------------- /4. Structure from Motion/11.Tomasi-Kanade Factorization _ Structure from Motion.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/surajiitd/fpcv_slides/b8b7f6c95966565523c89a89de9d90eceaaee6f4/4. Structure from Motion/11.Tomasi-Kanade Factorization _ Structure from Motion.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # First Principles of Computer Vision Lecture Slides 2 | 3 | ## Description 4 | - Uploaded some sample slides of Youtube Lectures by [Prof. Shree K. Nayar](https://fpcv.cs.columbia.edu/) in this repo. 5 | - The code to extract the slides from videos is also present in this repo and it is mainly inspired from [this repository](https://github.com/kaushikj/video2pdf) 6 | - The code uses **OpenCV's Background Subtraction** algorithm to detect the change in the frame. 7 | - I have modified to work it with [Prof. Shree K. Nayar's Youtube lectures](https://www.youtube.com/@firstprinciplesofcomputerv3258). 8 | - This project converts a video presentation into a deck of pdf slides by capturing screenshots of unique frames. 9 | Note: Before uploading the slides' PDFs to this repository, I compressed them using some online tool. 10 | 11 | --- 12 | ## Steps to run the code 13 | `python video2pdfslides.py ` 14 | 15 | ### Run for multiple .mp4 files in a directory 16 | `python video2pdfslides_for_multiple_vids.py ` 17 | 18 | ## Future work 19 | - will use Tesseract for OCR in the slides. 20 | -------------------------------------------------------------------------------- /input/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore 5 | -------------------------------------------------------------------------------- /log.txt: -------------------------------------------------------------------------------- 1 | Log for debugging 2 | Case1, frame_count=1, non_zero_pixels=921600, p_diff=100.0, frame_skipped=0, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 3 | Case3, frame_count=2, non_zero_pixels=0, p_diff=0.0, frame_skipped=1, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 4 | Case3, frame_count=3, non_zero_pixels=0, p_diff=0.0, frame_skipped=2, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 5 | Case3, frame_count=4, non_zero_pixels=0, p_diff=0.0, frame_skipped=3, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 6 | Case3, frame_count=5, non_zero_pixels=0, p_diff=0.0, frame_skipped=4, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 7 | Case3, frame_count=6, non_zero_pixels=0, p_diff=0.0, frame_skipped=5, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 8 | Case3, frame_count=7, non_zero_pixels=0, p_diff=0.0, frame_skipped=6, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 9 | Case3, frame_count=8, non_zero_pixels=0, p_diff=0.0, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 10 | Case3, frame_count=9, non_zero_pixels=240985, p_diff=26.148546006944446, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 11 | Case3, frame_count=10, non_zero_pixels=233829, p_diff=25.3720703125, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 12 | Case3, frame_count=11, non_zero_pixels=233365, p_diff=25.321723090277775, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 13 | Case3, frame_count=12, non_zero_pixels=65072, p_diff=7.060763888888889, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 14 | Case3, frame_count=13, non_zero_pixels=53787, p_diff=5.836263020833334, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 15 | Case3, frame_count=14, non_zero_pixels=52273, p_diff=5.671983506944445, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 16 | Case3, frame_count=15, non_zero_pixels=28224, p_diff=3.0625, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 17 | Case3, frame_count=16, non_zero_pixels=35781, p_diff=3.882486979166667, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 18 | Case0, frame_count=17, distances_mean=0.0, is_plain=True 19 | Case0, frame_count=18, distances_mean=0.0, is_plain=True 20 | Case0, frame_count=19, distances_mean=0.0, is_plain=True 21 | Case0, frame_count=20, distances_mean=0.0, is_plain=True 22 | Case0, frame_count=21, distances_mean=0.0, is_plain=True 23 | Case0, frame_count=22, distances_mean=0.0, is_plain=True 24 | Case0, frame_count=23, distances_mean=0.0, is_plain=True 25 | Case0, frame_count=24, distances_mean=0.0, is_plain=True 26 | Case0, frame_count=25, distances_mean=0.0, is_plain=True 27 | Case0, frame_count=26, distances_mean=0.0, is_plain=True 28 | Case0, frame_count=27, distances_mean=0.0, is_plain=True 29 | Case0, frame_count=28, distances_mean=0.0, is_plain=True 30 | Case0, frame_count=29, distances_mean=0.0, is_plain=True 31 | Case0, frame_count=30, distances_mean=0.0, is_plain=True 32 | Case0, frame_count=31, distances_mean=0.0, is_plain=True 33 | Case0, frame_count=32, distances_mean=0.0, is_plain=True 34 | Case0, frame_count=33, distances_mean=0.0, is_plain=True 35 | Case0, frame_count=34, distances_mean=0.0, is_plain=True 36 | Case0, frame_count=35, distances_mean=0.0, is_plain=True 37 | Case0, frame_count=36, distances_mean=0.0, is_plain=True 38 | Case0, frame_count=37, distances_mean=0.0, is_plain=True 39 | Case0, frame_count=38, distances_mean=0.0, is_plain=True 40 | Case0, frame_count=39, distances_mean=0.0, is_plain=True 41 | Case0, frame_count=40, distances_mean=0.0, is_plain=True 42 | Case0, frame_count=41, distances_mean=0.0, is_plain=True 43 | Case0, frame_count=42, distances_mean=0.0, is_plain=True 44 | Case0, frame_count=43, distances_mean=0.0, is_plain=True 45 | Case0, frame_count=44, distances_mean=0.0, is_plain=True 46 | Case0, frame_count=45, distances_mean=0.0, is_plain=True 47 | Case0, frame_count=46, distances_mean=0.0, is_plain=True 48 | Case0, frame_count=47, distances_mean=0.0, is_plain=True 49 | Case0, frame_count=48, distances_mean=0.0, is_plain=True 50 | Case0, frame_count=49, distances_mean=0.0, is_plain=True 51 | Case0, frame_count=50, distances_mean=0.0, is_plain=True 52 | Case0, frame_count=51, distances_mean=0.0, is_plain=True 53 | Case0, frame_count=52, distances_mean=0.0, is_plain=True 54 | Case0, frame_count=53, distances_mean=0.0, is_plain=True 55 | Case2, frame_count=54, non_zero_pixels=226408, p_diff=24.566840277777775, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 56 | Case3, frame_count=55, non_zero_pixels=111218, p_diff=12.067925347222221, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 57 | Case3, frame_count=56, non_zero_pixels=103705, p_diff=11.25271267361111, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 58 | Case3, frame_count=57, non_zero_pixels=91080, p_diff=9.8828125, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 59 | Case3, frame_count=58, non_zero_pixels=43998, p_diff=4.774088541666666, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 60 | Case3, frame_count=59, non_zero_pixels=14416, p_diff=1.564236111111111, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 61 | Case3, frame_count=60, non_zero_pixels=1196, p_diff=0.12977430555555555, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 62 | Case3, frame_count=61, non_zero_pixels=88, p_diff=0.009548611111111112, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 63 | Case1, frame_count=62, non_zero_pixels=72, p_diff=0.0078125, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 64 | Case3, frame_count=63, non_zero_pixels=130, p_diff=0.014105902777777776, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 65 | Case3, frame_count=64, non_zero_pixels=160, p_diff=0.017361111111111112, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 66 | Case3, frame_count=65, non_zero_pixels=145, p_diff=0.015733506944444444, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 67 | Case3, frame_count=66, non_zero_pixels=22126, p_diff=2.4008246527777777, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 68 | Case3, frame_count=67, non_zero_pixels=22115, p_diff=2.399631076388889, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 69 | Case3, frame_count=68, non_zero_pixels=21098, p_diff=2.289279513888889, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 70 | Case3, frame_count=69, non_zero_pixels=5001, p_diff=0.5426432291666666, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 71 | Case3, frame_count=70, non_zero_pixels=67, p_diff=0.007269965277777777, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 72 | Case3, frame_count=71, non_zero_pixels=36, p_diff=0.00390625, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 73 | Case3, frame_count=72, non_zero_pixels=37, p_diff=0.004014756944444445, frame_skipped=17, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 74 | Case3, frame_count=73, non_zero_pixels=18, p_diff=0.001953125, frame_skipped=18, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 75 | Case3, frame_count=74, non_zero_pixels=26, p_diff=0.0028211805555555555, frame_skipped=19, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 76 | Case3, frame_count=75, non_zero_pixels=17, p_diff=0.0018446180555555555, frame_skipped=20, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 77 | Case3, frame_count=76, non_zero_pixels=142, p_diff=0.01540798611111111, frame_skipped=21, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 78 | Case3, frame_count=77, non_zero_pixels=107, p_diff=0.011610243055555556, frame_skipped=22, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 79 | Case3, frame_count=78, non_zero_pixels=7, p_diff=0.0007595486111111111, frame_skipped=23, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 80 | Case3, frame_count=79, non_zero_pixels=22, p_diff=0.002387152777777778, frame_skipped=24, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 81 | Case3, frame_count=80, non_zero_pixels=126, p_diff=0.013671875000000002, frame_skipped=25, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 82 | Case3, frame_count=81, non_zero_pixels=77, p_diff=0.008355034722222222, frame_skipped=26, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 83 | Case3, frame_count=82, non_zero_pixels=1539, p_diff=0.1669921875, frame_skipped=27, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 84 | Case3, frame_count=83, non_zero_pixels=1507, p_diff=0.16351996527777776, frame_skipped=28, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 85 | Case3, frame_count=84, non_zero_pixels=1478, p_diff=0.1603732638888889, frame_skipped=29, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 86 | Case3, frame_count=85, non_zero_pixels=3135, p_diff=0.3401692708333333, frame_skipped=30, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 87 | Case3, frame_count=86, non_zero_pixels=1690, p_diff=0.1833767361111111, frame_skipped=31, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 88 | Case3, frame_count=87, non_zero_pixels=1690, p_diff=0.1833767361111111, frame_skipped=32, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 89 | Case3, frame_count=88, non_zero_pixels=1660, p_diff=0.1801215277777778, frame_skipped=33, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 90 | Case3, frame_count=89, non_zero_pixels=107, p_diff=0.011610243055555556, frame_skipped=34, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 91 | Case3, frame_count=90, non_zero_pixels=110, p_diff=0.011935763888888888, frame_skipped=35, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 92 | Case3, frame_count=91, non_zero_pixels=121, p_diff=0.013129340277777778, frame_skipped=36, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 93 | Case3, frame_count=92, non_zero_pixels=125, p_diff=0.013563368055555556, frame_skipped=37, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 94 | Case3, frame_count=93, non_zero_pixels=124, p_diff=0.013454861111111112, frame_skipped=38, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 95 | Case3, frame_count=94, non_zero_pixels=119, p_diff=0.012912326388888888, frame_skipped=39, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 96 | Case3, frame_count=95, non_zero_pixels=142, p_diff=0.01540798611111111, frame_skipped=40, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 97 | Case3, frame_count=96, non_zero_pixels=141, p_diff=0.015299479166666668, frame_skipped=41, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=True 98 | Case2, frame_count=97, non_zero_pixels=175, p_diff=0.01898871527777778, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 99 | Case3, frame_count=98, non_zero_pixels=8372, p_diff=0.9084201388888888, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 100 | Case3, frame_count=99, non_zero_pixels=7685, p_diff=0.8338758680555556, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 101 | Case3, frame_count=100, non_zero_pixels=7690, p_diff=0.8344184027777778, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 102 | Case3, frame_count=101, non_zero_pixels=7373, p_diff=0.8000217013888888, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 103 | Case3, frame_count=102, non_zero_pixels=82, p_diff=0.008897569444444444, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 104 | Case3, frame_count=103, non_zero_pixels=33, p_diff=0.0035807291666666665, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 105 | Case3, frame_count=104, non_zero_pixels=5, p_diff=0.0005425347222222222, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 106 | Case1, frame_count=105, non_zero_pixels=6, p_diff=0.0006510416666666667, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 107 | Case3, frame_count=106, non_zero_pixels=6, p_diff=0.0006510416666666667, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 108 | Case3, frame_count=107, non_zero_pixels=0, p_diff=0.0, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 109 | Case3, frame_count=108, non_zero_pixels=3, p_diff=0.00032552083333333337, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 110 | Case3, frame_count=109, non_zero_pixels=3, p_diff=0.00032552083333333337, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 111 | Case3, frame_count=110, non_zero_pixels=120, p_diff=0.013020833333333334, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 112 | Case3, frame_count=111, non_zero_pixels=119, p_diff=0.012912326388888888, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 113 | Case3, frame_count=112, non_zero_pixels=117, p_diff=0.0126953125, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 114 | Case3, frame_count=113, non_zero_pixels=112, p_diff=0.012152777777777778, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 115 | Case3, frame_count=114, non_zero_pixels=142, p_diff=0.01540798611111111, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 116 | Case3, frame_count=115, non_zero_pixels=132, p_diff=0.014322916666666666, frame_skipped=17, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 117 | Case3, frame_count=116, non_zero_pixels=69, p_diff=0.007486979166666666, frame_skipped=18, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 118 | Case3, frame_count=117, non_zero_pixels=53, p_diff=0.005750868055555555, frame_skipped=19, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 119 | Case3, frame_count=118, non_zero_pixels=1, p_diff=0.00010850694444444444, frame_skipped=20, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 120 | Case3, frame_count=119, non_zero_pixels=0, p_diff=0.0, frame_skipped=21, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 121 | Case3, frame_count=120, non_zero_pixels=6, p_diff=0.0006510416666666667, frame_skipped=22, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 122 | Case3, frame_count=121, non_zero_pixels=86, p_diff=0.009331597222222222, frame_skipped=23, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 123 | Case3, frame_count=122, non_zero_pixels=43, p_diff=0.004665798611111111, frame_skipped=24, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 124 | Case3, frame_count=123, non_zero_pixels=68, p_diff=0.007378472222222222, frame_skipped=25, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 125 | Case3, frame_count=124, non_zero_pixels=117, p_diff=0.0126953125, frame_skipped=26, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 126 | Case3, frame_count=125, non_zero_pixels=134, p_diff=0.014539930555555554, frame_skipped=27, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 127 | Case3, frame_count=126, non_zero_pixels=176, p_diff=0.019097222222222224, frame_skipped=28, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 128 | Case3, frame_count=127, non_zero_pixels=236, p_diff=0.02560763888888889, frame_skipped=29, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 129 | Case3, frame_count=128, non_zero_pixels=226, p_diff=0.024522569444444444, frame_skipped=30, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 130 | Case3, frame_count=129, non_zero_pixels=121, p_diff=0.013129340277777778, frame_skipped=31, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 131 | Case3, frame_count=130, non_zero_pixels=2477, p_diff=0.2687717013888889, frame_skipped=32, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 132 | Case3, frame_count=131, non_zero_pixels=2472, p_diff=0.2682291666666667, frame_skipped=33, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 133 | Case3, frame_count=132, non_zero_pixels=2391, p_diff=0.2594401041666667, frame_skipped=34, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 134 | Case3, frame_count=133, non_zero_pixels=1957, p_diff=0.2123480902777778, frame_skipped=35, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 135 | Case3, frame_count=134, non_zero_pixels=12, p_diff=0.0013020833333333335, frame_skipped=36, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 136 | Case3, frame_count=135, non_zero_pixels=5, p_diff=0.0005425347222222222, frame_skipped=37, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 137 | Case3, frame_count=136, non_zero_pixels=5, p_diff=0.0005425347222222222, frame_skipped=38, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 138 | Case3, frame_count=137, non_zero_pixels=39, p_diff=0.004231770833333334, frame_skipped=39, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 139 | Case3, frame_count=138, non_zero_pixels=69, p_diff=0.007486979166666666, frame_skipped=40, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 140 | Case3, frame_count=139, non_zero_pixels=29, p_diff=0.003146701388888889, frame_skipped=41, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=True 141 | Case2, frame_count=140, non_zero_pixels=6, p_diff=0.0006510416666666667, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 142 | Case3, frame_count=141, non_zero_pixels=2, p_diff=0.00021701388888888888, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 143 | Case3, frame_count=142, non_zero_pixels=6, p_diff=0.0006510416666666667, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 144 | Case3, frame_count=143, non_zero_pixels=6, p_diff=0.0006510416666666667, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 145 | Case3, frame_count=144, non_zero_pixels=5, p_diff=0.0005425347222222222, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 146 | Case3, frame_count=145, non_zero_pixels=822, p_diff=0.08919270833333333, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 147 | Case3, frame_count=146, non_zero_pixels=1495, p_diff=0.16221788194444445, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 148 | Case3, frame_count=147, non_zero_pixels=1463, p_diff=0.15874565972222224, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 149 | Case1, frame_count=148, non_zero_pixels=1444, p_diff=0.15668402777777776, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 150 | Case3, frame_count=149, non_zero_pixels=1311, p_diff=0.14225260416666669, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 151 | Case3, frame_count=150, non_zero_pixels=155, p_diff=0.016818576388888888, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 152 | Case3, frame_count=151, non_zero_pixels=145, p_diff=0.015733506944444444, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 153 | Case3, frame_count=152, non_zero_pixels=141, p_diff=0.015299479166666668, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 154 | Case3, frame_count=153, non_zero_pixels=247, p_diff=0.026801215277777776, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 155 | Case3, frame_count=154, non_zero_pixels=74, p_diff=0.00802951388888889, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 156 | Case3, frame_count=155, non_zero_pixels=59, p_diff=0.006401909722222223, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 157 | Case3, frame_count=156, non_zero_pixels=35, p_diff=0.0037977430555555555, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 158 | Case3, frame_count=157, non_zero_pixels=26, p_diff=0.0028211805555555555, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 159 | Case3, frame_count=158, non_zero_pixels=8, p_diff=0.0008680555555555555, frame_skipped=17, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 160 | Case3, frame_count=159, non_zero_pixels=201, p_diff=0.021809895833333332, frame_skipped=18, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 161 | Case3, frame_count=160, non_zero_pixels=164, p_diff=0.017795138888888888, frame_skipped=19, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 162 | Case3, frame_count=161, non_zero_pixels=150, p_diff=0.016276041666666664, frame_skipped=20, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 163 | Case3, frame_count=162, non_zero_pixels=65, p_diff=0.007052951388888888, frame_skipped=21, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 164 | Case3, frame_count=163, non_zero_pixels=59, p_diff=0.006401909722222223, frame_skipped=22, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 165 | Case3, frame_count=164, non_zero_pixels=53, p_diff=0.005750868055555555, frame_skipped=23, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 166 | Case3, frame_count=165, non_zero_pixels=26, p_diff=0.0028211805555555555, frame_skipped=24, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 167 | Case3, frame_count=166, non_zero_pixels=2, p_diff=0.00021701388888888888, frame_skipped=25, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 168 | Case3, frame_count=167, non_zero_pixels=5, p_diff=0.0005425347222222222, frame_skipped=26, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 169 | Case3, frame_count=168, non_zero_pixels=6, p_diff=0.0006510416666666667, frame_skipped=27, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 170 | Case3, frame_count=169, non_zero_pixels=9, p_diff=0.0009765625, frame_skipped=28, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 171 | Case3, frame_count=170, non_zero_pixels=50, p_diff=0.005425347222222222, frame_skipped=29, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 172 | Case3, frame_count=171, non_zero_pixels=6, p_diff=0.0006510416666666667, frame_skipped=30, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 173 | Case3, frame_count=172, non_zero_pixels=0, p_diff=0.0, frame_skipped=31, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 174 | Case3, frame_count=173, non_zero_pixels=0, p_diff=0.0, frame_skipped=32, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 175 | Case3, frame_count=174, non_zero_pixels=0, p_diff=0.0, frame_skipped=33, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 176 | Case3, frame_count=175, non_zero_pixels=0, p_diff=0.0, frame_skipped=34, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 177 | Case3, frame_count=176, non_zero_pixels=0, p_diff=0.0, frame_skipped=35, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 178 | Case3, frame_count=177, non_zero_pixels=751, p_diff=0.08148871527777778, frame_skipped=36, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 179 | Case3, frame_count=178, non_zero_pixels=1339, p_diff=0.14529079861111113, frame_skipped=37, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 180 | Case3, frame_count=179, non_zero_pixels=1313, p_diff=0.14246961805555555, frame_skipped=38, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 181 | Case3, frame_count=180, non_zero_pixels=973, p_diff=0.10557725694444445, frame_skipped=39, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 182 | Case3, frame_count=181, non_zero_pixels=416, p_diff=0.04513888888888889, frame_skipped=40, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 183 | Case3, frame_count=182, non_zero_pixels=170, p_diff=0.018446180555555556, frame_skipped=41, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=True 184 | Case2, frame_count=183, non_zero_pixels=180, p_diff=0.01953125, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 185 | Case3, frame_count=184, non_zero_pixels=285, p_diff=0.030924479166666664, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 186 | Case3, frame_count=185, non_zero_pixels=267, p_diff=0.028971354166666668, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 187 | Case3, frame_count=186, non_zero_pixels=258, p_diff=0.027994791666666668, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 188 | Case3, frame_count=187, non_zero_pixels=223, p_diff=0.024197048611111112, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 189 | Case3, frame_count=188, non_zero_pixels=197, p_diff=0.021375868055555556, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 190 | Case3, frame_count=189, non_zero_pixels=206, p_diff=0.022352430555555556, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 191 | Case3, frame_count=190, non_zero_pixels=249, p_diff=0.027018229166666668, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 192 | Case1, frame_count=191, non_zero_pixels=210, p_diff=0.022786458333333332, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 193 | Case3, frame_count=192, non_zero_pixels=151, p_diff=0.016384548611111112, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 194 | Case3, frame_count=193, non_zero_pixels=115, p_diff=0.01247829861111111, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 195 | Case3, frame_count=194, non_zero_pixels=293, p_diff=0.031792534722222224, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 196 | Case3, frame_count=195, non_zero_pixels=204, p_diff=0.022135416666666664, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 197 | Case3, frame_count=196, non_zero_pixels=206, p_diff=0.022352430555555556, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 198 | Case3, frame_count=197, non_zero_pixels=245, p_diff=0.026584201388888888, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 199 | Case3, frame_count=198, non_zero_pixels=169, p_diff=0.01833767361111111, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 200 | Case3, frame_count=199, non_zero_pixels=188, p_diff=0.020399305555555556, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 201 | Case3, frame_count=200, non_zero_pixels=147, p_diff=0.015950520833333332, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 202 | Case3, frame_count=201, non_zero_pixels=35, p_diff=0.0037977430555555555, frame_skipped=17, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 203 | Case3, frame_count=202, non_zero_pixels=72684, p_diff=7.886718750000001, frame_skipped=18, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 204 | Case3, frame_count=203, non_zero_pixels=72695, p_diff=7.887912326388889, frame_skipped=19, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 205 | Case3, frame_count=204, non_zero_pixels=72687, p_diff=7.887044270833334, frame_skipped=20, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 206 | Case3, frame_count=205, non_zero_pixels=72712, p_diff=7.889756944444444, frame_skipped=21, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 207 | Case3, frame_count=206, non_zero_pixels=96, p_diff=0.010416666666666668, frame_skipped=22, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 208 | Case3, frame_count=207, non_zero_pixels=64, p_diff=0.006944444444444444, frame_skipped=23, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 209 | Case3, frame_count=208, non_zero_pixels=28, p_diff=0.0030381944444444445, frame_skipped=24, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 210 | Case3, frame_count=209, non_zero_pixels=30, p_diff=0.0032552083333333335, frame_skipped=25, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 211 | Case3, frame_count=210, non_zero_pixels=21133, p_diff=2.2930772569444446, frame_skipped=26, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 212 | Case3, frame_count=211, non_zero_pixels=21010, p_diff=2.2797309027777777, frame_skipped=27, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 213 | Case3, frame_count=212, non_zero_pixels=35605, p_diff=3.863389756944444, frame_skipped=28, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 214 | Case3, frame_count=213, non_zero_pixels=36106, p_diff=3.9177517361111107, frame_skipped=29, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 215 | Case3, frame_count=214, non_zero_pixels=14730, p_diff=1.5983072916666667, frame_skipped=30, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 216 | Case3, frame_count=215, non_zero_pixels=14054, p_diff=1.5249565972222223, frame_skipped=31, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 217 | Case3, frame_count=216, non_zero_pixels=582, p_diff=0.06315104166666666, frame_skipped=32, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 218 | Case3, frame_count=217, non_zero_pixels=154, p_diff=0.016710069444444444, frame_skipped=33, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 219 | Case3, frame_count=218, non_zero_pixels=195, p_diff=0.021158854166666668, frame_skipped=34, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 220 | Case3, frame_count=219, non_zero_pixels=244, p_diff=0.026475694444444448, frame_skipped=35, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 221 | Case3, frame_count=220, non_zero_pixels=202, p_diff=0.021918402777777776, frame_skipped=36, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 222 | Case3, frame_count=221, non_zero_pixels=183, p_diff=0.019856770833333332, frame_skipped=37, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 223 | Case3, frame_count=222, non_zero_pixels=100, p_diff=0.010850694444444444, frame_skipped=38, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 224 | Case3, frame_count=223, non_zero_pixels=43, p_diff=0.004665798611111111, frame_skipped=39, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 225 | Case3, frame_count=224, non_zero_pixels=13, p_diff=0.0014105902777777778, frame_skipped=40, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 226 | Case3, frame_count=225, non_zero_pixels=13078, p_diff=1.4190538194444444, frame_skipped=41, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=True 227 | Case2, frame_count=226, non_zero_pixels=18482, p_diff=2.005425347222222, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 228 | Case3, frame_count=227, non_zero_pixels=18524, p_diff=2.009982638888889, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 229 | Case3, frame_count=228, non_zero_pixels=18375, p_diff=1.9938151041666667, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 230 | Case3, frame_count=229, non_zero_pixels=6610, p_diff=0.7172309027777778, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 231 | Case3, frame_count=230, non_zero_pixels=146, p_diff=0.015842013888888888, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 232 | Case3, frame_count=231, non_zero_pixels=211, p_diff=0.02289496527777778, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 233 | Case3, frame_count=232, non_zero_pixels=190, p_diff=0.020616319444444444, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 234 | Case3, frame_count=233, non_zero_pixels=163, p_diff=0.017686631944444444, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 235 | Case1, frame_count=234, non_zero_pixels=147, p_diff=0.015950520833333332, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 236 | Case3, frame_count=235, non_zero_pixels=132, p_diff=0.014322916666666666, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 237 | Case3, frame_count=236, non_zero_pixels=143, p_diff=0.015516493055555556, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 238 | Case3, frame_count=237, non_zero_pixels=144, p_diff=0.015625, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 239 | Case3, frame_count=238, non_zero_pixels=165, p_diff=0.017903645833333332, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 240 | Case3, frame_count=239, non_zero_pixels=175, p_diff=0.01898871527777778, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 241 | Case3, frame_count=240, non_zero_pixels=213, p_diff=0.023111979166666668, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 242 | Case3, frame_count=241, non_zero_pixels=180, p_diff=0.01953125, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 243 | Case3, frame_count=242, non_zero_pixels=6363, p_diff=0.6904296875, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 244 | Case3, frame_count=243, non_zero_pixels=5624, p_diff=0.6102430555555556, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 245 | Case3, frame_count=244, non_zero_pixels=5514, p_diff=0.5983072916666667, frame_skipped=17, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 246 | Case3, frame_count=245, non_zero_pixels=4425, p_diff=0.4801432291666667, frame_skipped=18, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 247 | Case3, frame_count=246, non_zero_pixels=170, p_diff=0.018446180555555556, frame_skipped=19, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 248 | Case3, frame_count=247, non_zero_pixels=150, p_diff=0.016276041666666664, frame_skipped=20, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 249 | Case3, frame_count=248, non_zero_pixels=144, p_diff=0.015625, frame_skipped=21, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 250 | Case3, frame_count=249, non_zero_pixels=107, p_diff=0.011610243055555556, frame_skipped=22, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 251 | Case3, frame_count=250, non_zero_pixels=111, p_diff=0.012044270833333334, frame_skipped=23, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 252 | Case3, frame_count=251, non_zero_pixels=105, p_diff=0.011393229166666666, frame_skipped=24, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 253 | Case3, frame_count=252, non_zero_pixels=98, p_diff=0.010633680555555554, frame_skipped=25, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 254 | Case3, frame_count=253, non_zero_pixels=115, p_diff=0.01247829861111111, frame_skipped=26, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 255 | Case3, frame_count=254, non_zero_pixels=155, p_diff=0.016818576388888888, frame_skipped=27, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 256 | Case3, frame_count=255, non_zero_pixels=153, p_diff=0.0166015625, frame_skipped=28, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 257 | Case3, frame_count=256, non_zero_pixels=252, p_diff=0.027343750000000003, frame_skipped=29, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 258 | Case3, frame_count=257, non_zero_pixels=186, p_diff=0.020182291666666668, frame_skipped=30, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 259 | Case3, frame_count=258, non_zero_pixels=468, p_diff=0.05078125, frame_skipped=31, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 260 | Case3, frame_count=259, non_zero_pixels=501, p_diff=0.054361979166666664, frame_skipped=32, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 261 | Case3, frame_count=260, non_zero_pixels=470, p_diff=0.050998263888888895, frame_skipped=33, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 262 | Case3, frame_count=261, non_zero_pixels=372, p_diff=0.040364583333333336, frame_skipped=34, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 263 | Case3, frame_count=262, non_zero_pixels=88, p_diff=0.009548611111111112, frame_skipped=35, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 264 | Case3, frame_count=263, non_zero_pixels=155, p_diff=0.016818576388888888, frame_skipped=36, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 265 | Case3, frame_count=264, non_zero_pixels=174, p_diff=0.018880208333333332, frame_skipped=37, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 266 | Case3, frame_count=265, non_zero_pixels=184, p_diff=0.01996527777777778, frame_skipped=38, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 267 | Case3, frame_count=266, non_zero_pixels=202, p_diff=0.021918402777777776, frame_skipped=39, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 268 | Case3, frame_count=267, non_zero_pixels=191, p_diff=0.020724826388888888, frame_skipped=40, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 269 | Case3, frame_count=268, non_zero_pixels=186, p_diff=0.020182291666666668, frame_skipped=41, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=True 270 | Case2, frame_count=269, non_zero_pixels=255, p_diff=0.027669270833333332, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 271 | Case3, frame_count=270, non_zero_pixels=256, p_diff=0.027777777777777776, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 272 | Case3, frame_count=271, non_zero_pixels=248, p_diff=0.026909722222222224, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 273 | Case3, frame_count=272, non_zero_pixels=283, p_diff=0.03070746527777778, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 274 | Case3, frame_count=273, non_zero_pixels=223, p_diff=0.024197048611111112, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 275 | Case3, frame_count=274, non_zero_pixels=2677, p_diff=0.2904730902777778, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 276 | Case3, frame_count=275, non_zero_pixels=2473, p_diff=0.2683376736111111, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 277 | Case3, frame_count=276, non_zero_pixels=2427, p_diff=0.2633463541666667, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 278 | Case1, frame_count=277, non_zero_pixels=2128, p_diff=0.2309027777777778, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 279 | Case3, frame_count=278, non_zero_pixels=28, p_diff=0.0030381944444444445, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 280 | Case3, frame_count=279, non_zero_pixels=171, p_diff=0.0185546875, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 281 | Case3, frame_count=280, non_zero_pixels=187, p_diff=0.020290798611111112, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 282 | Case3, frame_count=281, non_zero_pixels=276, p_diff=0.029947916666666664, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 283 | Case3, frame_count=282, non_zero_pixels=259, p_diff=0.028103298611111112, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 284 | Case3, frame_count=283, non_zero_pixels=184, p_diff=0.01996527777777778, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 285 | Case3, frame_count=284, non_zero_pixels=3, p_diff=0.00032552083333333337, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 286 | Case3, frame_count=285, non_zero_pixels=3, p_diff=0.00032552083333333337, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 287 | Case3, frame_count=286, non_zero_pixels=0, p_diff=0.0, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 288 | Case3, frame_count=287, non_zero_pixels=162, p_diff=0.017578125, frame_skipped=17, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 289 | Case3, frame_count=288, non_zero_pixels=182, p_diff=0.019748263888888888, frame_skipped=18, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 290 | Case3, frame_count=289, non_zero_pixels=220, p_diff=0.023871527777777776, frame_skipped=19, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 291 | Case3, frame_count=290, non_zero_pixels=332, p_diff=0.03602430555555555, frame_skipped=20, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 292 | Case3, frame_count=291, non_zero_pixels=277, p_diff=0.03005642361111111, frame_skipped=21, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 293 | Case3, frame_count=292, non_zero_pixels=359, p_diff=0.03895399305555556, frame_skipped=22, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 294 | Case3, frame_count=293, non_zero_pixels=310, p_diff=0.033637152777777776, frame_skipped=23, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 295 | Case3, frame_count=294, non_zero_pixels=192, p_diff=0.020833333333333336, frame_skipped=24, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 296 | Case3, frame_count=295, non_zero_pixels=143, p_diff=0.015516493055555556, frame_skipped=25, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 297 | Case3, frame_count=296, non_zero_pixels=124, p_diff=0.013454861111111112, frame_skipped=26, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 298 | Case3, frame_count=297, non_zero_pixels=125, p_diff=0.013563368055555556, frame_skipped=27, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 299 | Case3, frame_count=298, non_zero_pixels=175, p_diff=0.01898871527777778, frame_skipped=28, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 300 | Case3, frame_count=299, non_zero_pixels=141, p_diff=0.015299479166666668, frame_skipped=29, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 301 | Case3, frame_count=300, non_zero_pixels=141, p_diff=0.015299479166666668, frame_skipped=30, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 302 | Case3, frame_count=301, non_zero_pixels=120, p_diff=0.013020833333333334, frame_skipped=31, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 303 | Case3, frame_count=302, non_zero_pixels=110, p_diff=0.011935763888888888, frame_skipped=32, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 304 | Case3, frame_count=303, non_zero_pixels=0, p_diff=0.0, frame_skipped=33, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 305 | Case3, frame_count=304, non_zero_pixels=0, p_diff=0.0, frame_skipped=34, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 306 | Case3, frame_count=305, non_zero_pixels=3206, p_diff=0.3478732638888889, frame_skipped=35, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 307 | Case3, frame_count=306, non_zero_pixels=4764, p_diff=0.5169270833333333, frame_skipped=36, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 308 | Case3, frame_count=307, non_zero_pixels=4698, p_diff=0.509765625, frame_skipped=37, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 309 | Case3, frame_count=308, non_zero_pixels=4335, p_diff=0.47037760416666663, frame_skipped=38, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 310 | Case3, frame_count=309, non_zero_pixels=1851, p_diff=0.20084635416666666, frame_skipped=39, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 311 | Case3, frame_count=310, non_zero_pixels=140, p_diff=0.015190972222222222, frame_skipped=40, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 312 | Case3, frame_count=311, non_zero_pixels=125, p_diff=0.013563368055555556, frame_skipped=41, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=True 313 | Case2, frame_count=312, non_zero_pixels=179, p_diff=0.019422743055555556, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 314 | Case3, frame_count=313, non_zero_pixels=177, p_diff=0.019205729166666664, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 315 | Case3, frame_count=314, non_zero_pixels=128, p_diff=0.013888888888888888, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 316 | Case3, frame_count=315, non_zero_pixels=176, p_diff=0.019097222222222224, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 317 | Case3, frame_count=316, non_zero_pixels=177, p_diff=0.019205729166666664, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 318 | Case3, frame_count=317, non_zero_pixels=213, p_diff=0.023111979166666668, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 319 | Case3, frame_count=318, non_zero_pixels=230, p_diff=0.02495659722222222, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 320 | Case3, frame_count=319, non_zero_pixels=196, p_diff=0.02126736111111111, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 321 | Case1, frame_count=320, non_zero_pixels=239, p_diff=0.02593315972222222, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 322 | Case3, frame_count=321, non_zero_pixels=189, p_diff=0.0205078125, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 323 | Case3, frame_count=322, non_zero_pixels=374, p_diff=0.040581597222222224, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 324 | Case3, frame_count=323, non_zero_pixels=312, p_diff=0.03385416666666667, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 325 | Case3, frame_count=324, non_zero_pixels=217, p_diff=0.023546006944444444, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 326 | Case3, frame_count=325, non_zero_pixels=166, p_diff=0.018012152777777776, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 327 | Case3, frame_count=326, non_zero_pixels=114, p_diff=0.012369791666666668, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 328 | Case3, frame_count=327, non_zero_pixels=124, p_diff=0.013454861111111112, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 329 | Case3, frame_count=328, non_zero_pixels=124, p_diff=0.013454861111111112, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 330 | Case3, frame_count=329, non_zero_pixels=113, p_diff=0.012261284722222222, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 331 | Case3, frame_count=330, non_zero_pixels=1552, p_diff=0.1684027777777778, frame_skipped=17, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 332 | Case3, frame_count=331, non_zero_pixels=1516, p_diff=0.16449652777777776, frame_skipped=18, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 333 | Case3, frame_count=332, non_zero_pixels=1387, p_diff=0.15049913194444445, frame_skipped=19, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 334 | Case3, frame_count=333, non_zero_pixels=914, p_diff=0.09917534722222222, frame_skipped=20, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 335 | Case3, frame_count=334, non_zero_pixels=55, p_diff=0.005967881944444444, frame_skipped=21, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 336 | Case3, frame_count=335, non_zero_pixels=0, p_diff=0.0, frame_skipped=22, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 337 | Case3, frame_count=336, non_zero_pixels=0, p_diff=0.0, frame_skipped=23, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 338 | Case3, frame_count=337, non_zero_pixels=0, p_diff=0.0, frame_skipped=24, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 339 | Case3, frame_count=338, non_zero_pixels=2184, p_diff=0.23697916666666669, frame_skipped=25, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 340 | Case3, frame_count=339, non_zero_pixels=2092, p_diff=0.2269965277777778, frame_skipped=26, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 341 | Case3, frame_count=340, non_zero_pixels=2004, p_diff=0.21744791666666666, frame_skipped=27, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 342 | Case3, frame_count=341, non_zero_pixels=1511, p_diff=0.16395399305555555, frame_skipped=28, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 343 | Case3, frame_count=342, non_zero_pixels=80, p_diff=0.008680555555555556, frame_skipped=29, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 344 | Case3, frame_count=343, non_zero_pixels=84, p_diff=0.009114583333333334, frame_skipped=30, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 345 | Case3, frame_count=344, non_zero_pixels=68, p_diff=0.007378472222222222, frame_skipped=31, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 346 | Case3, frame_count=345, non_zero_pixels=10, p_diff=0.0010850694444444445, frame_skipped=32, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 347 | Case3, frame_count=346, non_zero_pixels=26, p_diff=0.0028211805555555555, frame_skipped=33, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 348 | Case3, frame_count=347, non_zero_pixels=0, p_diff=0.0, frame_skipped=34, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 349 | Case3, frame_count=348, non_zero_pixels=592, p_diff=0.06423611111111112, frame_skipped=35, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 350 | Case3, frame_count=349, non_zero_pixels=558, p_diff=0.060546875, frame_skipped=36, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 351 | Case3, frame_count=350, non_zero_pixels=609, p_diff=0.06608072916666666, frame_skipped=37, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 352 | Case3, frame_count=351, non_zero_pixels=620, p_diff=0.06727430555555555, frame_skipped=38, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 353 | Case3, frame_count=352, non_zero_pixels=150, p_diff=0.016276041666666664, frame_skipped=39, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 354 | Case3, frame_count=353, non_zero_pixels=58, p_diff=0.006293402777777778, frame_skipped=40, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 355 | Case3, frame_count=354, non_zero_pixels=298, p_diff=0.03233506944444445, frame_skipped=41, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=True 356 | Case2, frame_count=355, non_zero_pixels=310, p_diff=0.033637152777777776, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 357 | Case3, frame_count=356, non_zero_pixels=283, p_diff=0.03070746527777778, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 358 | Case3, frame_count=357, non_zero_pixels=173, p_diff=0.018771701388888888, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 359 | Case3, frame_count=358, non_zero_pixels=5, p_diff=0.0005425347222222222, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 360 | Case3, frame_count=359, non_zero_pixels=0, p_diff=0.0, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 361 | Case3, frame_count=360, non_zero_pixels=116, p_diff=0.012586805555555556, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 362 | Case3, frame_count=361, non_zero_pixels=127, p_diff=0.013780381944444444, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 363 | Case3, frame_count=362, non_zero_pixels=112, p_diff=0.012152777777777778, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 364 | Case1, frame_count=363, non_zero_pixels=88, p_diff=0.009548611111111112, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 365 | Case3, frame_count=364, non_zero_pixels=81, p_diff=0.0087890625, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 366 | Case3, frame_count=365, non_zero_pixels=105, p_diff=0.011393229166666666, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 367 | Case3, frame_count=366, non_zero_pixels=113, p_diff=0.012261284722222222, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 368 | Case3, frame_count=367, non_zero_pixels=127, p_diff=0.013780381944444444, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 369 | Case3, frame_count=368, non_zero_pixels=68, p_diff=0.007378472222222222, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 370 | Case3, frame_count=369, non_zero_pixels=17, p_diff=0.0018446180555555555, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 371 | Case3, frame_count=370, non_zero_pixels=1650, p_diff=0.17903645833333331, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 372 | Case3, frame_count=371, non_zero_pixels=1614, p_diff=0.17513020833333331, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 373 | Case3, frame_count=372, non_zero_pixels=1512, p_diff=0.1640625, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 374 | Case3, frame_count=373, non_zero_pixels=1348, p_diff=0.14626736111111113, frame_skipped=17, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 375 | Case3, frame_count=374, non_zero_pixels=11, p_diff=0.001193576388888889, frame_skipped=18, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 376 | Case3, frame_count=375, non_zero_pixels=20, p_diff=0.002170138888888889, frame_skipped=19, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 377 | Case3, frame_count=376, non_zero_pixels=9, p_diff=0.0009765625, frame_skipped=20, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 378 | Case3, frame_count=377, non_zero_pixels=27, p_diff=0.0029296875, frame_skipped=21, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 379 | Case3, frame_count=378, non_zero_pixels=88, p_diff=0.009548611111111112, frame_skipped=22, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 380 | Case3, frame_count=379, non_zero_pixels=2, p_diff=0.00021701388888888888, frame_skipped=23, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 381 | Case3, frame_count=380, non_zero_pixels=3, p_diff=0.00032552083333333337, frame_skipped=24, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 382 | Case3, frame_count=381, non_zero_pixels=2, p_diff=0.00021701388888888888, frame_skipped=25, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 383 | Case3, frame_count=382, non_zero_pixels=1, p_diff=0.00010850694444444444, frame_skipped=26, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 384 | Case3, frame_count=383, non_zero_pixels=1, p_diff=0.00010850694444444444, frame_skipped=27, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 385 | Case3, frame_count=384, non_zero_pixels=0, p_diff=0.0, frame_skipped=28, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 386 | Case3, frame_count=385, non_zero_pixels=8, p_diff=0.0008680555555555555, frame_skipped=29, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 387 | Case3, frame_count=386, non_zero_pixels=1272, p_diff=0.13802083333333334, frame_skipped=30, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 388 | Case3, frame_count=387, non_zero_pixels=1221, p_diff=0.13248697916666666, frame_skipped=31, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 389 | Case3, frame_count=388, non_zero_pixels=1168, p_diff=0.1267361111111111, frame_skipped=32, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 390 | Case3, frame_count=389, non_zero_pixels=1099, p_diff=0.11924913194444443, frame_skipped=33, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 391 | Case3, frame_count=390, non_zero_pixels=8, p_diff=0.0008680555555555555, frame_skipped=34, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 392 | Case3, frame_count=391, non_zero_pixels=2, p_diff=0.00021701388888888888, frame_skipped=35, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 393 | Case3, frame_count=392, non_zero_pixels=0, p_diff=0.0, frame_skipped=36, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 394 | Case3, frame_count=393, non_zero_pixels=1, p_diff=0.00010850694444444444, frame_skipped=37, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 395 | Case3, frame_count=394, non_zero_pixels=1, p_diff=0.00010850694444444444, frame_skipped=38, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 396 | Case3, frame_count=395, non_zero_pixels=1, p_diff=0.00010850694444444444, frame_skipped=39, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 397 | Case3, frame_count=396, non_zero_pixels=0, p_diff=0.0, frame_skipped=40, captured=True, p_diff >= MAX_PERCENT=False, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 398 | Case3, frame_count=397, non_zero_pixels=166864, p_diff=18.10590277777778, frame_skipped=41, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=True 399 | Case2, frame_count=398, non_zero_pixels=166842, p_diff=18.103515625, frame_skipped=0, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 400 | Case3, frame_count=399, non_zero_pixels=166257, p_diff=18.0400390625, frame_skipped=1, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 401 | Case3, frame_count=400, non_zero_pixels=161123, p_diff=17.48296440972222, frame_skipped=2, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 402 | Case3, frame_count=401, non_zero_pixels=10, p_diff=0.0010850694444444445, frame_skipped=3, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 403 | Case3, frame_count=402, non_zero_pixels=9206, p_diff=0.9989149305555556, frame_skipped=4, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 404 | Case3, frame_count=403, non_zero_pixels=9182, p_diff=0.9963107638888888, frame_skipped=5, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 405 | Case3, frame_count=404, non_zero_pixels=9139, p_diff=0.9916449652777777, frame_skipped=6, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 406 | Case3, frame_count=405, non_zero_pixels=8920, p_diff=0.9678819444444444, frame_skipped=7, captured=False, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 407 | Case1, frame_count=406, non_zero_pixels=3, p_diff=0.00032552083333333337, frame_skipped=7, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 408 | Case3, frame_count=407, non_zero_pixels=2, p_diff=0.00021701388888888888, frame_skipped=8, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 409 | Case3, frame_count=408, non_zero_pixels=2, p_diff=0.00021701388888888888, frame_skipped=9, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 410 | Case3, frame_count=409, non_zero_pixels=3, p_diff=0.00032552083333333337, frame_skipped=10, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 411 | Case3, frame_count=410, non_zero_pixels=675, p_diff=0.0732421875, frame_skipped=11, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 412 | Case3, frame_count=411, non_zero_pixels=747, p_diff=0.0810546875, frame_skipped=12, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 413 | Case3, frame_count=412, non_zero_pixels=720, p_diff=0.078125, frame_skipped=13, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 414 | Case3, frame_count=413, non_zero_pixels=665, p_diff=0.07215711805555555, frame_skipped=14, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 415 | Case3, frame_count=414, non_zero_pixels=180, p_diff=0.01953125, frame_skipped=15, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 416 | Case3, frame_count=415, non_zero_pixels=196, p_diff=0.02126736111111111, frame_skipped=16, captured=True, p_diff >= MAX_PERCENT=True, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES=False 417 | -------------------------------------------------------------------------------- /output/.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore everything in this directory 2 | * 3 | # Except this file 4 | !.gitignore 5 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | imutils==0.5.4 2 | opencv_python==4.5.2.52 3 | img2pdf==0.4.1 4 | -------------------------------------------------------------------------------- /video2pdfslides.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | import cv2 4 | import imutils 5 | import shutil 6 | import img2pdf 7 | import glob 8 | import argparse 9 | import numpy as np 10 | 11 | 12 | ############# Define constants 13 | """ 14 | To skip starting few frames: 15 | 1. set WARMUP manually for that video, 16 | 2. see a region which remains constant for few frames. and 17 | set that in only_speaker_mode() function. 18 | To remove the speaker region to go into background subtraction model: 19 | see the speaker region by opening imshow window for that frame, and 20 | hardcode that manually in 21 | """ 22 | OUTPUT_SLIDES_DIR = f"./output" 23 | #orig 24 | # FRAME_RATE = 3 # no.of frames per second that needs to be processed, fewer the count faster the speed 25 | # WARMUP = 0 # initial number of frames to be skipped 26 | # FGBG_HISTORY = FRAME_RATE * 15 # no.of frames in background object 27 | # VAR_THRESHOLD = 16 # Threshold on the squared Mahalanobis distance between the pixel and the model to decide whether a pixel is well described by the background model. 28 | # DETECT_SHADOWS = False # If true, the algorithm will detect shadows and mark them. 29 | # MIN_PERCENT = 0.1 # min % of diff between foreground and background to detect if motion has stopped 30 | # MAX_PERCENT = 3 # max % of diff between foreground and background to detect if frame is still in motion 31 | 32 | #new 33 | FRAME_RATE = 3 # no.of frames per second that needs to be processed, fewer the count faster the speed 34 | WARMUP = 0 # initial number of frames to be skipped 35 | FGBG_HISTORY = FRAME_RATE * 15 # no.of frames in background object 36 | VAR_THRESHOLD = 16 # Threshold on the squared Mahalanobis distance between the pixel and the model to decide whether a pixel is well described by the background model. 37 | DETECT_SHADOWS = False # If true, the algorithm will detect shadows and mark them. 38 | MIN_PERCENT = 0.1 # min % of diff between foreground and background to detect if motion has stopped 39 | MAX_PERCENT = .0001 #.001 .0001 40 | 41 | # params by suraj 42 | MIN_WAIT_BETWEEEN_TWO_SLIDES = 40 #(30 frames per second * 2 seconds) 43 | LOG_TO_FILE_FOR_DEBUG = False 44 | WANT_TO_MANUALLY_SEE_COORDS_OF_SOME_REGION = True 45 | 46 | def get_frames(video_path): 47 | '''A fucntion to return the frames from a video located at video_path 48 | this function skips frames as defined in FRAME_RATE''' 49 | 50 | 51 | # open a pointer to the video file initialize the width and height of the frame 52 | vs = cv2.VideoCapture(video_path) 53 | if not vs.isOpened(): 54 | raise Exception(f'unable to open file {video_path}') 55 | 56 | 57 | total_frames = vs.get(cv2.CAP_PROP_FRAME_COUNT) 58 | frame_time = 0 59 | frame_count = 0 60 | print("total_frames: ", total_frames) 61 | print("FRAME_RATE", FRAME_RATE) 62 | 63 | # loop over the frames of the video 64 | while True: 65 | # grab a frame from the video 66 | 67 | vs.set(cv2.CAP_PROP_POS_MSEC, frame_time * 1000) # move frame to a timestamp 68 | frame_time += 1/FRAME_RATE 69 | 70 | (_, frame) = vs.read() 71 | # if the frame is None, then we have reached the end of the video file 72 | if frame is None: 73 | break 74 | 75 | frame_count += 1 76 | yield frame_count, frame_time, frame 77 | 78 | vs.release() 79 | 80 | def only_speaker_mode(frame, frame_count): 81 | # applies only for shree k nayar's video. 82 | 83 | (top_left_x, top_left_y, bottom_right_x, bottom_right_y) = (79,20,470,274) #(337, 340, 914,378) 84 | roi = frame[top_left_y:bottom_right_y, top_left_x:bottom_right_x] 85 | 86 | # Calculate the Euclidean distance between the ROI pixels and roi[0, 0] in the RGB color space 87 | distances = np.linalg.norm(roi - roi[0, 0], axis=-1) 88 | 89 | # Define the color similarity threshold 90 | threshold = 2 91 | # Check if the distances are below the color similarity threshold 92 | is_plain = np.all(distances < threshold) 93 | if is_plain: 94 | if LOG_TO_FILE_FOR_DEBUG: 95 | with open("log.txt", "a") as f: 96 | debug_str="Case0" 97 | f.write(f"{debug_str}, frame_count={frame_count}, distances_mean={distances.mean()}, is_plain={is_plain}\n") 98 | return is_plain 99 | 100 | def detect_unique_screenshots(video_path, output_folder_screenshot_path): 101 | '''''' 102 | # Initialize fgbg a Background object with Parameters 103 | # history = The number of frames history that effects the background subtractor 104 | # varThreshold = Threshold on the squared Mahalanobis distance between the pixel and the model to decide whether a pixel is well described by the background model. This parameter does not affect the background update. 105 | # detectShadows = If true, the algorithm will detect shadows and mark them. It decreases the speed a bit, so if you do not need this feature, set the parameter to false. 106 | 107 | fgbg = cv2.createBackgroundSubtractorMOG2(history=FGBG_HISTORY, varThreshold=VAR_THRESHOLD,detectShadows=DETECT_SHADOWS) 108 | captured = False 109 | start_time = time.time() 110 | (W, H) = (None, None) 111 | 112 | screenshoots_count = 0 113 | #hardcode by seeing frames where speaker is present so that speaker movement will be ignored. 114 | (top_left_x, top_left_y, bottom_right_x, bottom_right_y) = (915, 360, 1279, 719) #(337, 340, 914,378) 115 | i=0 116 | frame_skipped=0 117 | if LOG_TO_FILE_FOR_DEBUG: 118 | with open("log.txt", "w") as f: # to overwrite the file 119 | f.write(f"Log for debugging\n") 120 | frame_skipped_nayar_video = 0 121 | for frame_count, frame_time, frame in get_frames(video_path): 122 | orig = frame.copy() # clone the original frame (so we can save it later), 123 | #frame = imutils.resize(frame, width=600) # resize the frame 124 | 125 | if only_speaker_mode(frame,frame_count): 126 | print("skipping only speaker frames...Applies only for shree k nayar's video.") 127 | frame_skipped_nayar_video+=1 128 | frame_skipped+=1 129 | continue 130 | if i==0 and WANT_TO_MANUALLY_SEE_COORDS_OF_SOME_REGION: #set i for which you want to see the region corrdinates in a frame 131 | # Used just to hardcode the speaker region, only speaker frames. 132 | # To later ignore them while background subtraction. 133 | window_name = "Hover Mouse to select the points(top-left,bottom-right) for speaker region" 134 | cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) 135 | window_width = 1366 # see in ubuntu settings 136 | window_height = 768 137 | cv2.resizeWindow(window_name, window_width, window_height) 138 | cv2.imshow(window_name, frame) 139 | cv2.waitKey(0) 140 | cv2.destroyAllWindows() 141 | # if i<500: 142 | # #save starting 500 frames for debugging purpose. 143 | # os.makedirs("temp",exist_ok=True) 144 | # path = os.path.join("temp", f"{frame_count:03}_{round(frame_time/60, 4)}.png") 145 | # cv2.imwrite(path, orig) 146 | 147 | i+=1 148 | frame[top_left_y:bottom_right_y, top_left_x:bottom_right_x] = 0 149 | mask = fgbg.apply(frame) # apply the background subtractor 150 | 151 | 152 | # if the width and height are empty, grab the spatial dimensions 153 | if W is None or H is None: 154 | (H, W) = mask.shape[:2] 155 | 156 | # compute the percentage of the mask that is "foreground" 157 | non_zero_pixels = cv2.countNonZero(mask) 158 | p_diff = (non_zero_pixels / float(W * H)) * 100 159 | 160 | # if p_diff less than N% then motion has stopped, thus capture the frame 161 | # if (not captured) and p_diff < MIN_PERCENT and frame_count > WARMUP: 162 | if (not captured) and frame_count >= WARMUP and (frame_count==1 or frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES//6): 163 | #save this frame as a slide. When: 164 | # If found large movements (once entered case3) and save a frame after skipping few(settled down) 165 | captured = True 166 | filename = f"{screenshoots_count:03}_{round(frame_time/60, 2)}_{frame_count:04}.png" 167 | path = os.path.join(output_folder_screenshot_path, filename) 168 | print("saving {}".format(path)) 169 | cv2.imwrite(path, orig) 170 | screenshoots_count += 1 171 | debug_str = "Case1" 172 | # otherwise, either the scene is changing or we're still in warmup 173 | # mode so let's wait until the scene has settled or we're finished 174 | # building the background model 175 | 176 | elif captured and p_diff >= MAX_PERCENT and frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES: 177 | # After entering here, Now will save a frame as a slide after few frames(after settling down). 178 | captured = False 179 | frame_skipped = 0 180 | debug_str = "Case2" 181 | else: 182 | # SKIP if: 1. no motion, or 183 | # 2. still in warmup mode, or 184 | # 3. not settled down yet(showing old movement). 185 | debug_str = "Case3" 186 | frame_skipped += 1 187 | 188 | # To debug, what is happening in each frame. 189 | if LOG_TO_FILE_FOR_DEBUG: 190 | with open("log.txt", "a") as f: 191 | f.write(f"{debug_str}, frame_count={frame_count}, non_zero_pixels={non_zero_pixels}, p_diff={p_diff}, frame_skipped={frame_skipped}, captured={captured}, p_diff >= MAX_PERCENT={p_diff >= MAX_PERCENT}, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES={frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES}\n") 192 | 193 | print(f'{screenshoots_count} screenshots Captured!') 194 | print(f"frame skipped where only Nayar Sir is present={frame_skipped_nayar_video}, video is 30fps") 195 | print(f'Time taken {time.time()-start_time}s') 196 | return 197 | 198 | 199 | def initialize_output_folder(video_path): 200 | '''Clean the output folder if already exists''' 201 | video_name = ".".join(video_path.rsplit('/')[-1].split('.')[:-1]) 202 | output_folder_screenshot_path = f"{OUTPUT_SLIDES_DIR}/{video_name}" 203 | 204 | if os.path.exists(output_folder_screenshot_path): 205 | shutil.rmtree(output_folder_screenshot_path) 206 | 207 | os.makedirs(output_folder_screenshot_path, exist_ok=True) 208 | print('initialized output folder', output_folder_screenshot_path) 209 | return output_folder_screenshot_path 210 | 211 | 212 | def convert_screenshots_to_pdf(output_folder_screenshot_path): 213 | video_name = ".".join(video_path.rsplit('/')[-1].split('.')[:-1]) 214 | output_pdf_path = f"{OUTPUT_SLIDES_DIR}/{video_name}" + '.pdf' 215 | print('output_folder_screenshot_path', output_folder_screenshot_path) 216 | print('output_pdf_path', output_pdf_path) 217 | print('converting images to pdf..') 218 | with open(output_pdf_path, "wb") as f: 219 | f.write(img2pdf.convert(sorted(glob.glob(f"{output_folder_screenshot_path}/*.png")))) 220 | print('Pdf Created!') 221 | print('pdf saved at', output_pdf_path) 222 | 223 | 224 | if __name__ == "__main__": 225 | 226 | # video_path = "./input/Test Video 2.mp4" 227 | # choice = 'y' 228 | # output_folder_screenshot_path = initialize_output_folder(video_path) 229 | 230 | 231 | parser = argparse.ArgumentParser("video_path") 232 | parser.add_argument("video_path", help="path of video to be converted to pdf slides", type=str) 233 | args = parser.parse_args() 234 | video_path = args.video_path 235 | 236 | print('video_path', video_path) 237 | output_folder_screenshot_path = initialize_output_folder(video_path) 238 | detect_unique_screenshots(video_path, output_folder_screenshot_path) 239 | 240 | print('Please Manually verify screenshots and delete duplicates') 241 | while True: 242 | choice = input("Press y to continue and n to terminate") 243 | choice = choice.lower().strip() 244 | if choice in ['y', 'n']: 245 | break 246 | else: 247 | print('please enter a valid choice') 248 | 249 | if choice == 'y': 250 | convert_screenshots_to_pdf(output_folder_screenshot_path) -------------------------------------------------------------------------------- /video2pdfslides_for_multiple_vids.py: -------------------------------------------------------------------------------- 1 | import os 2 | import time 3 | import cv2 4 | import imutils 5 | import shutil 6 | import img2pdf 7 | import glob 8 | import argparse 9 | import numpy as np 10 | 11 | 12 | ############# Define constants 13 | """ 14 | To skip starting few frames: 15 | 1. set WARMUP manually for that video, 16 | 2. see a region which remains constant for few frames. and 17 | set that in only_speaker_mode() function. 18 | To remove the speaker region to go into background subtraction model: 19 | see the speaker region by opening imshow window for that frame, and 20 | hardcode that manually in 21 | """ 22 | OUTPUT_SLIDES_DIR = f"./output" 23 | #orig 24 | # FRAME_RATE = 3 # no.of frames per second that needs to be processed, fewer the count faster the speed 25 | # WARMUP = 0 # initial number of frames to be skipped 26 | # FGBG_HISTORY = FRAME_RATE * 15 # no.of frames in background object 27 | # VAR_THRESHOLD = 16 # Threshold on the squared Mahalanobis distance between the pixel and the model to decide whether a pixel is well described by the background model. 28 | # DETECT_SHADOWS = False # If true, the algorithm will detect shadows and mark them. 29 | # MIN_PERCENT = 0.1 # min % of diff between foreground and background to detect if motion has stopped 30 | # MAX_PERCENT = 3 # max % of diff between foreground and background to detect if frame is still in motion 31 | 32 | #new 33 | # Parameters set for SHree K Nayar Sir's youtube lectures. 34 | FRAME_RATE = 3 # no.of frames per second that needs to be processed, fewer the count faster the speed 35 | WARMUP = 0 # initial number of frames to be skipped 36 | FGBG_HISTORY = FRAME_RATE * 15 # no.of frames in background object 37 | VAR_THRESHOLD = 16 # Threshold on the squared Mahalanobis distance between the pixel and the model to decide whether a pixel is well described by the background model. 38 | DETECT_SHADOWS = False # If true, the algorithm will detect shadows and mark them. 39 | MIN_PERCENT = 0.1 # min % of diff between foreground and background to detect if motion has stopped 40 | MAX_PERCENT = .0001 #.001 .0001 41 | 42 | # params by suraj 43 | MIN_WAIT_BETWEEEN_TWO_SLIDES = 40 #(30 frames per second * 2 seconds) 44 | LOG_TO_FILE_FOR_DEBUG = False 45 | WANT_TO_MANUALLY_SEE_COORDS_OF_SOME_REGION = False 46 | 47 | def get_frames(video_path): 48 | '''A fucntion to return the frames from a video located at video_path 49 | this function skips frames as defined in FRAME_RATE''' 50 | 51 | 52 | # open a pointer to the video file initialize the width and height of the frame 53 | vs = cv2.VideoCapture(video_path) 54 | if not vs.isOpened(): 55 | raise Exception(f'unable to open file {video_path}') 56 | 57 | 58 | total_frames = vs.get(cv2.CAP_PROP_FRAME_COUNT) 59 | frame_time = 0 60 | frame_count = 0 61 | print("total_frames: ", total_frames) 62 | print("FRAME_RATE", FRAME_RATE) 63 | 64 | # loop over the frames of the video 65 | while True: 66 | # grab a frame from the video 67 | 68 | vs.set(cv2.CAP_PROP_POS_MSEC, frame_time * 1000) # move frame to a timestamp 69 | frame_time += 1/FRAME_RATE 70 | 71 | (_, frame) = vs.read() 72 | # if the frame is None, then we have reached the end of the video file 73 | if frame is None: 74 | break 75 | 76 | frame_count += 1 77 | yield frame_count, frame_time, frame 78 | 79 | vs.release() 80 | 81 | def only_speaker_mode(frame, frame_count): 82 | # applies only for shree k nayar's video. 83 | 84 | (top_left_x, top_left_y, bottom_right_x, bottom_right_y) = (79,20,470,274) #(337, 340, 914,378) 85 | roi = frame[top_left_y:bottom_right_y, top_left_x:bottom_right_x] 86 | 87 | # Calculate the Euclidean distance between the ROI pixels and roi[0, 0] in the RGB color space 88 | distances = np.linalg.norm(roi - roi[0, 0], axis=-1) 89 | 90 | # Define the color similarity threshold 91 | threshold = 2 92 | # Check if the distances are below the color similarity threshold 93 | is_plain = np.all(distances < threshold) 94 | if is_plain: 95 | if LOG_TO_FILE_FOR_DEBUG: 96 | with open("log.txt", "a") as f: 97 | debug_str="Case0" 98 | f.write(f"{debug_str}, frame_count={frame_count}, distances_mean={distances.mean()}, is_plain={is_plain}\n") 99 | return is_plain 100 | 101 | def detect_unique_screenshots(video_path, output_folder_screenshot_path): 102 | '''''' 103 | # Initialize fgbg a Background object with Parameters 104 | # history = The number of frames history that effects the background subtractor 105 | # varThreshold = Threshold on the squared Mahalanobis distance between the pixel and the model to decide whether a pixel is well described by the background model. This parameter does not affect the background update. 106 | # detectShadows = If true, the algorithm will detect shadows and mark them. It decreases the speed a bit, so if you do not need this feature, set the parameter to false. 107 | 108 | fgbg = cv2.createBackgroundSubtractorMOG2(history=FGBG_HISTORY, varThreshold=VAR_THRESHOLD,detectShadows=DETECT_SHADOWS) 109 | captured = False 110 | start_time = time.time() 111 | (W, H) = (None, None) 112 | 113 | screenshoots_count = 0 114 | #hardcode by seeing frames where speaker is present. 115 | (top_left_x, top_left_y, bottom_right_x, bottom_right_y) = (915, 360, 1279, 719) #(337, 340, 914,378) 116 | i=0 117 | frame_skipped=0 118 | if LOG_TO_FILE_FOR_DEBUG: 119 | with open("log.txt", "w") as f: # to overwrite the file 120 | f.write(f"Log for debugging\n") 121 | frame_skipped_nayar_video = 0 122 | for frame_count, frame_time, frame in get_frames(video_path): 123 | orig = frame.copy() # clone the original frame (so we can save it later), 124 | #frame = imutils.resize(frame, width=600) # resize the frame 125 | 126 | if only_speaker_mode(frame,frame_count): 127 | print("skipping only speaker frames...Applies only for shree k nayar's video.") 128 | frame_skipped_nayar_video+=1 129 | frame_skipped+=1 130 | continue 131 | if i==0 and WANT_TO_MANUALLY_SEE_COORDS_OF_SOME_REGION: #set i for which you want to see the region corrdinates in a frame 132 | # Used just to hardcode the speaker region, only speaker frames. 133 | # To later ignore them while background subtraction. 134 | window_name = "Hover Mouse to select the points(top-left,bottom-right) for speaker region" 135 | cv2.namedWindow(window_name, cv2.WINDOW_NORMAL) 136 | window_width = 1366 # see in ubuntu settings 137 | window_height = 768 138 | cv2.resizeWindow(window_name, window_width, window_height) 139 | cv2.imshow(window_name, frame) 140 | cv2.waitKey(0) 141 | cv2.destroyAllWindows() 142 | 143 | i+=1 144 | frame[top_left_y:bottom_right_y, top_left_x:bottom_right_x] = 0 145 | mask = fgbg.apply(frame) # apply the background subtractor 146 | 147 | # apply a series of erosions and dilations to eliminate noise 148 | # eroded_mask = cv2.erode(mask, None, iterations=2) 149 | # mask = cv2.dilate(mask, None, iterations=2) 150 | 151 | # if the width and height are empty, grab the spatial dimensions 152 | if W is None or H is None: 153 | (H, W) = mask.shape[:2] 154 | 155 | # compute the percentage of the mask that is "foreground" 156 | non_zero_pixels = cv2.countNonZero(mask) 157 | p_diff = (non_zero_pixels / float(W * H)) * 100 158 | 159 | # if p_diff less than N% then motion has stopped, thus capture the frame 160 | # if (not captured) and p_diff < MIN_PERCENT and frame_count > WARMUP: 161 | if (not captured) and frame_count >= WARMUP and (frame_count==1 or frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES//6): 162 | #save this frame as a slide. When: 163 | # If found large movements (once entered case3) and save a frame after skipping few(settled down) 164 | captured = True 165 | filename = f"{screenshoots_count:03}_{round(frame_time/60, 2)}_{frame_count:04}.png" 166 | path = os.path.join(output_folder_screenshot_path, filename) 167 | print("saving {}".format(path)) 168 | cv2.imwrite(path, orig) 169 | screenshoots_count += 1 170 | debug_str = "Case1" 171 | # otherwise, either the scene is changing or we're still in warmup 172 | # mode so let's wait until the scene has settled or we're finished 173 | # building the background model 174 | 175 | elif captured and p_diff >= MAX_PERCENT and frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES: 176 | # After entering here, Now will save a frame as a slide after few frames(after settling down). 177 | captured = False 178 | frame_skipped = 0 179 | debug_str = "Case2" 180 | else: 181 | # SKIP if: 1. no motion, or 182 | # 2. still in warmup mode, or 183 | # 3. not settled down yet(showing old movement). 184 | debug_str = "Case3" 185 | frame_skipped += 1 186 | 187 | # To debug, what is happening in each frame. 188 | if LOG_TO_FILE_FOR_DEBUG: 189 | with open("log.txt", "a") as f: 190 | f.write(f"{debug_str}, frame_count={frame_count}, non_zero_pixels={non_zero_pixels}, p_diff={p_diff}, frame_skipped={frame_skipped}, captured={captured}, p_diff >= MAX_PERCENT={p_diff >= MAX_PERCENT}, frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES={frame_skipped > MIN_WAIT_BETWEEEN_TWO_SLIDES}\n") 191 | 192 | print(f'{screenshoots_count} screenshots Captured!') 193 | print(f"frame skipped where only Nayar Sir is present={frame_skipped_nayar_video}, video is 30fps") 194 | print(f'Time taken {time.time()-start_time}s') 195 | return 196 | 197 | 198 | def initialize_output_folder(video_path): 199 | '''Clean the output folder if already exists''' 200 | video_name = ".".join(video_path.rsplit('/')[-1].split('.')[:-1]) 201 | output_folder_screenshot_path = f"{OUTPUT_SLIDES_DIR}/{video_name}" 202 | 203 | if os.path.exists(output_folder_screenshot_path): 204 | shutil.rmtree(output_folder_screenshot_path) 205 | 206 | os.makedirs(output_folder_screenshot_path, exist_ok=True) 207 | print('initialized output folder', output_folder_screenshot_path) 208 | return output_folder_screenshot_path 209 | 210 | 211 | def convert_screenshots_to_pdf(output_folder_screenshot_path, video_path): 212 | video_name = ".".join(video_path.rsplit('/')[-1].split('.')[:-1]) 213 | # output_pdf_path = f"{OUTPUT_SLIDES_DIR}/{video_name}" + '.pdf' 214 | output_pdf_path = video_path.replace(".mp4",".pdf") 215 | print('output_folder_screenshot_path', output_folder_screenshot_path) 216 | print('output_pdf_path', output_pdf_path) 217 | print('converting images to pdf..') 218 | with open(output_pdf_path, "wb") as f: 219 | f.write(img2pdf.convert(sorted(glob.glob(f"{output_folder_screenshot_path}/*.png")))) 220 | print('Pdf Created!') 221 | print('pdf saved at', output_pdf_path) 222 | 223 | 224 | if __name__ == "__main__": 225 | 226 | parser = argparse.ArgumentParser("dir_path") 227 | parser.add_argument("dir_path", help="path of dir containing videos to be converted to pdf slides", type=str) 228 | args = parser.parse_args() 229 | dir_path = args.dir_path 230 | for video_path in glob.glob(f"{dir_path}/*.mp4"): 231 | print('video_path', video_path) 232 | output_folder_screenshot_path = initialize_output_folder(video_path) 233 | detect_unique_screenshots(video_path, output_folder_screenshot_path) 234 | 235 | convert_screenshots_to_pdf(output_folder_screenshot_path, video_path) 236 | 237 | # print('Please Manually verify screenshots and delete duplicates') 238 | # while True: 239 | # choice = input("Press y to continue and n to terminate") 240 | # choice = choice.lower().strip() 241 | # if choice in ['y', 'n']: 242 | # break 243 | # else: 244 | # print('please enter a valid choice') 245 | 246 | # if choice == 'y': 247 | # convert_screenshots_to_pdf(output_folder_screenshot_path) 248 | --------------------------------------------------------------------------------