Commit 6a90b476 authored by Nadir Dalla Pozza's avatar Nadir Dalla Pozza
Browse files

Update.

parent e6c71421
No preview for this file type
BERIO060 BERIO058
tsh: 84 tshp: 90 tsh: 82 tshp: 92
Tue Jun 28 17:34:43 2022 Thu Aug 25 10:26:50 2022
Processing area found! READING HEAD: Positive is best.
Saved frames are: 230 TAPE: Positive is the only choice.
Processing elapsed time: 0:56 CAPSTAN: Positive is best.
Processing areas found!
BERIO060
tsh: 78 tshp: 92
Thu Aug 25 10:26:59 2022
BERIO058 BERIO058
tsh: 84 tshp: 90 tsh: 82 tshp: 92
Wed Jun 29 10:22:08 2022 Thu Aug 25 10:31:50 2022
Processing area found! READING HEAD: Positive is best.
TAPE: Positive is the only choice.
CAPSTAN: Positive is best.
Processing areas found!
BERIO058 BERIO060
tsh: 84 tshp: 90 tsh: 78 tshp: 92
Wed Jun 29 10:24:51 2022 Thu Aug 25 10:31:56 2022
Processing area found!
BERIO058 BERIO058
tsh: 84 tshp: 90 tsh: 82 tshp: 92
Wed Jun 29 10:25:49 2022 Thu Aug 25 10:33:10 2022
Processing area found! READING HEAD: Positive is best.
TAPE: Positive is the only choice.
CAPSTAN: Positive is best.
Processing areas found!
BERIO058 BERIO058
tsh: 84 tshp: 90 tsh: 82 tshp: 92
Wed Jun 29 10:28:21 2022 Thu Aug 25 10:34:37 2022
Processing area found! READING HEAD: Positive is best.
TAPE: Positive is the only choice.
CAPSTAN: Positive is best.
Processing areas found!
Saved frames are: 153
Processing elapsed time: 3:4
BERIO058
tsh: 84 tshp: 90
Wed Jun 29 10:45:25 2022
Processing area found!
BERIO058 BERIO060
tsh: 84 tshp: 90 tsh: 78 tshp: 92
Wed Jun 29 10:47:18 2022 Thu Aug 25 10:37:45 2022
Processing area found! READING HEAD: Positive is the only choice.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 59
Processing elapsed time: 0:59
BERIO058
tsh: 84 tshp: 90
Wed Jun 29 10:59:22 2022
Processing area found!
BERIO058 BERIO236
tsh: 84 tshp: 90 tsh: 78 tshp: 92
Wed Jun 29 11:02:03 2022 Thu Aug 25 10:38:56 2022
Processing area found! READING HEAD: Positive is best.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 74
Processing elapsed time: 1:13
BERIO058
tsh: 84 tshp: 90
Wed Jun 29 11:06:26 2022
Processing area found!
BERIO058 BERIO297
tsh: 84 tshp: 90 tsh: 82 tshp: 92
Wed Jun 29 11:11:34 2022 Thu Aug 25 10:40:18 2022
Processing area found! READING HEAD: Positive is the only choice.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 64
Processing elapsed time: 0:22
BERIO319
tsh: 82 tshp: 92
Thu Aug 25 10:40:46 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 57
Processing elapsed time: 0:12
BERIO333
tsh: 82 tshp: 92
Thu Aug 25 10:41:06 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 3031
Processing elapsed time: 1:32
BERIO415
tsh: 78 tshp: 92
Thu Aug 25 10:42:40 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 4777
Processing elapsed time: 2:28
LNONO044
tsh: 82 tshp: 92
Thu Aug 25 10:45:24 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 71
Processing elapsed time: 1:24
BERIO058
tsh: 84 tshp: 90
Wed Jun 29 11:14:03 2022
Processing area found!
BERIO058 BERIO058
tsh: 84 tshp: 90 tsh: 82 tshp: 93
Wed Jun 29 11:15:45 2022 Thu Aug 25 10:51:09 2022
Processing area found!
BERIO060
tsh: 78 tshp: 93
Thu Aug 25 10:51:09 2022
BERIO333
tsh: 92 tshp: 93
Thu Aug 25 10:51:16 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO415
tsh: 88 tshp: 93
Thu Aug 25 10:51:25 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO333
tsh: 97 tshp: 93
Thu Aug 25 10:51:44 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 449
Processing elapsed time: 1:3
BERIO415
tsh: 93 tshp: 93
Thu Aug 25 10:52:49 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO333
tsh: 102 tshp: 93
Thu Aug 25 10:55:09 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO415
tsh: 98 tshp: 93
Thu Aug 25 10:55:24 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 369
Processing elapsed time: 2:20
BERIO333
tsh: 102 tshp: 93
Thu Aug 25 10:58:32 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO415
tsh: 94 tshp: 93
Thu Aug 25 10:58:40 2022
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 10:58:43 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 267
Processing elapsed time: 1:0
BERIO415
tsh: 94 tshp: 93
Thu Aug 25 10:59:45 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 4735
Processing elapsed time: 2:29
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 11:20:19 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 267
Processing elapsed time: 0:56
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 11:21:47 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 267
Processing elapsed time: 0:55
BERIO415
tsh: 96 tshp: 93
Thu Aug 25 11:22:45 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 11:26:45 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 253
Processing elapsed time: 1:8
BERIO415
tsh: 98 tshp: 93
Thu Aug 25 11:27:56 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 11:29:06 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 253
Processing elapsed time: 0:55
BERIO415
tsh: 98 tshp: 93
Thu Aug 25 11:30:03 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 271
Processing elapsed time: 2:24
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 11:33:02 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO415
tsh: 98 tshp: 93
Thu Aug 25 11:33:23 2022
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 11:34:17 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO415
tsh: 98 tshp: 93
Thu Aug 25 11:35:05 2022
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 11:35:33 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
BERIO415
tsh: 98 tshp: 93
Thu Aug 25 11:35:52 2022
BERIO333
tsh: 98 tshp: 93
Thu Aug 25 11:36:11 2022
BERIO415
tsh: 98 tshp: 93
Thu Aug 25 11:36:12 2022
BERIO058 BERIO058
tsh: 84 tshp: 90 tsh: 82 tshp: 93
Wed Jun 29 11:17:17 2022 Thu Aug 25 11:36:23 2022
Processing area found! READING HEAD: Positive is best.
Saved frames are: 124 TAPE: Positive is the only choice.
Processing elapsed time: 2:26 Shifting down rectTape!
CAPSTAN: Positive is best.
Processing areas found!
Saved frames are: 153
Processing elapsed time: 2:32
BERIO060 BERIO060
tsh: 84 tshp: 90 tsh: 78 tshp: 93
Wed Jun 29 11:20:47 2022 Thu Aug 25 11:39:01 2022
Processing area found! READING HEAD: Positive is the only choice.
Saved frames are: 230 TAPE: Negative is best.
Processing elapsed time: 0:52 Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 55
Processing elapsed time: 0:55
BERIO236 BERIO236
tsh: 84 tshp: 90 tsh: 78 tshp: 93
Wed Jun 29 11:21:56 2022 Thu Aug 25 11:40:08 2022
Processing area found! READING HEAD: Positive is best.
Saved frames are: 71 TAPE: Positive is the only choice.
Processing elapsed time: 0:49 Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 68
Processing elapsed time: 0:58
BERIO297 BERIO297
tsh: 84 tshp: 90 tsh: 82 tshp: 93
Wed Jun 29 11:23:00 2022 Thu Aug 25 11:41:14 2022
Processing area found! READING HEAD: Positive is the only choice.
Saved frames are: 21 TAPE: Negative is best.
Processing elapsed time: 0:10 CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 37
Processing elapsed time: 0:19
BERIO319 BERIO319
tsh: 84 tshp: 90 tsh: 82 tshp: 93
Wed Jun 29 11:23:32 2022 Thu Aug 25 11:41:38 2022
Processing area found! READING HEAD: Positive is best.
Saved frames are: 23 TAPE: Negative is best.
Processing elapsed time: 0:6 Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 30
Processing elapsed time: 0:12
BERIO333 BERIO333
tsh: 84 tshp: 90 tsh: 98 tshp: 93
Wed Jun 29 11:23:51 2022 Thu Aug 25 11:41:58 2022
Processing area found! READING HEAD: Positive is the only choice.
Saved frames are: 361 TAPE: Positive is the only choice.
Processing elapsed time: 0:43 Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 255
Processing elapsed time: 0:53
BERIO415 BERIO415
tsh: 84 tshp: 90 tsh: 98 tshp: 93
Wed Jun 29 11:24:52 2022 Thu Aug 25 11:42:55 2022
Processing area found! READING HEAD: Positive is best.
Saved frames are: 227 TAPE: Negative is best.
Processing elapsed time: 2:9 CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 369
Processing elapsed time: 2:26
LNONO044 LNONO044
tsh: 84 tshp: 90 tsh: 82 tshp: 93
Wed Jun 29 11:27:47 2022 Thu Aug 25 11:45:35 2022
Processing area found! READING HEAD: Positive is the only choice.
Saved frames are: 473 TAPE: Positive is best.
Processing elapsed time: 1:18 Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 72
Processing elapsed time: 1:26
BERIO058 BERIO058
tsh: 84 tshp: 90 tsh: 83 tshp: 93
Wed Jun 29 14:19:16 2022 Thu Aug 25 11:53:44 2022
Processing area found! READING HEAD: Positive is best.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is best.
Processing areas found!
Saved frames are: 153
Processing elapsed time: 2:35
BERIO058
tsh: 84 tshp: 90
Wed Jun 29 15:33:31 2022
Processing area found!
BERIO060 BERIO060
tsh: 84 tshp: 90 tsh: 77 tshp: 93
Tue Jul 5 16:09:37 2022 Thu Aug 25 11:56:23 2022
Processing area found! READING HEAD: Positive is the only choice.
TAPE: Negative is best.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 56
Processing elapsed time: 1:1
BERIO058
tsh: 84 tshp: 90
Tue Jul 5 16:42:18 2022
Processing area found!
LNONO044 BERIO236
tsh: 84 tshp: 90 tsh: 77 tshp: 93
Tue Jul 5 17:33:00 2022 Thu Aug 25 11:57:36 2022
Processing area found! READING HEAD: Positive is best.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 68
Processing elapsed time: 1:2
BERIO058
tsh: 84 tshp: 90
Wed Aug 24 10:14:32 2022
Processing area not found.
BERIO058 BERIO297
tsh: 84 tshp: 90 tsh: 83 tshp: 93
Wed Aug 24 10:15:05 2022 Thu Aug 25 11:58:48 2022
Processing area found! READING HEAD: Positive is the only choice.
TAPE: Negative is best.
BERIO060 CAPSTAN: Positive is the only choice.
tsh: 80 tshp: 90 Processing areas found!
Wed Aug 24 10:17:36 2022 Saved frames are: 37
Processing area found! Processing elapsed time: 0:20
BERIO060
tsh: 50 tshp: 90
Wed Aug 24 10:18:09 2022
Processing area found!
BERIO060 BERIO319
tsh: 4 tshp: 90 tsh: 83 tshp: 93
Wed Aug 24 10:18:46 2022 Thu Aug 25 11:59:13 2022
Processing area found! READING HEAD: Positive is best.
TAPE: Negative is best.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 30
Processing elapsed time: 0:14
BERIO060
tsh: 98 tshp: 90
Wed Aug 24 10:19:25 2022
Processing area found!
BERIO060 BERIO333
tsh: 1 tshp: 90 tsh: 93 tshp: 93
Wed Aug 24 10:19:51 2022 Thu Aug 25 11:59:34 2022
Processing area found! READING HEAD: Positive is the only choice.
Saved frames are: 2 TAPE: Positive is the only choice.
Processing elapsed time: 0:50 Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 1643
Processing elapsed time: 1:14
BERIO060 BERIO415
tsh: 80 tshp: 90 tsh: 96 tshp: 93
Wed Aug 24 10:29:02 2022 Thu Aug 25 12:00:51 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
Saved frames are: 55 Saved frames are: 4449
Processing elapsed time: 0:52 Processing elapsed time: 2:26
BERIO060 LNONO044
tsh: 80 tshp: 90 tsh: 83 tshp: 93
Wed Aug 24 11:12:16 2022 Thu Aug 25 12:03:33 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is best.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
Saved frames are: 55 Saved frames are: 72
Processing elapsed time: 0:57 Processing elapsed time: 1:27
BERIO060 BERIO333
tsh: 80 tshp: 50 tsh: 96 tshp: 93
Wed Aug 24 11:14:12 2022 Thu Aug 25 12:05:16 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
Saved frames are: 55 Saved frames are: 642
Processing elapsed time: 0:57 Processing elapsed time: 0:55
BERIO060 BERIO415
tsh: 80 tshp: 10 tsh: 98 tshp: 93
Wed Aug 24 11:15:33 2022 Thu Aug 25 12:06:15 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
Saved frames are: 55 Saved frames are: 369
Processing elapsed time: 0:55 Processing elapsed time: 2:13
BERIO060 BERIO333
tsh: 80 tshp: 1 tsh: 97 tshp: 93
Wed Aug 24 11:19:45 2022 Thu Aug 25 12:20:24 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
Saved frames are: 55 Saved frames are: 399
Processing elapsed time: 0:57 Processing elapsed time: 1:3
BERIO060 BERIO415
tsh: 80 tshp: 1 tsh: 97 tshp: 93
Wed Aug 24 11:22:29 2022 Thu Aug 25 12:21:30 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
BERIO060 BERIO333
tsh: 80 tshp: 90 tsh: 96 tshp: 93
Wed Aug 24 11:25:05 2022 Thu Aug 25 12:22:57 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
Saved frames are: 77
Processing elapsed time: 1:0 BERIO415
tsh: 98 tshp: 93
Thu Aug 25 12:23:54 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 369
Processing elapsed time: 2:15
BERIO060 BERIO415
tsh: 80 tshp: 95 tsh: 97 tshp: 93
Wed Aug 24 11:27:27 2022 Thu Aug 25 12:26:55 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
Saved frames are: 55
Processing elapsed time: 0:57 BERIO333
tsh: 83 tshp: 93
Thu Aug 25 15:12:28 2022
READING HEAD: Positive is the only choice.
TAPE: Positive is the only choice.
Shifting down rectTape!
CAPSTAN: Positive is the only choice.
Processing areas found!
Saved frames are: 439
Processing elapsed time: 1:12
BERIO060 BERIO415
tsh: 80 tshp: 92 tsh: 77 tshp: 93
Wed Aug 24 11:28:43 2022 Thu Aug 25 15:13:44 2022
READING HEAD: Positive is best.
TAPE: Negative is best.
CAPSTAN: Positive is the only choice.
Processing areas found! Processing areas found!
Saved frames are: 57 Saved frames are: 193
Processing elapsed time: 0:56 Processing elapsed time: 2:55
...@@ -421,6 +421,7 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o ...@@ -421,6 +421,7 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/ostream /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/ostream
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/bitset /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/bitset
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__bit_reference /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__bit_reference
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/fstream
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/iostream /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/iostream
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/sys/timeb.h /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/sys/timeb.h
/usr/local/include/boost/uuid/uuid.hpp /usr/local/include/boost/uuid/uuid.hpp
...@@ -1181,5 +1182,4 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o ...@@ -1181,5 +1182,4 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o
/usr/local/include/nlohmann/thirdparty/hedley/hedley_undef.hpp /usr/local/include/nlohmann/thirdparty/hedley/hedley_undef.hpp
/Users/nadir/Documents/MPAI-CAE/AIMs/VideoAnalyser/src/utility.h /Users/nadir/Documents/MPAI-CAE/AIMs/VideoAnalyser/src/utility.h
/Users/nadir/Documents/MPAI-CAE/AIMs/VideoAnalyser/src/forAudioAnalyser.h /Users/nadir/Documents/MPAI-CAE/AIMs/VideoAnalyser/src/forAudioAnalyser.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/fstream
...@@ -420,6 +420,7 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \ ...@@ -420,6 +420,7 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/ostream \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/ostream \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/bitset \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/bitset \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__bit_reference \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__bit_reference \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/fstream \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/iostream \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/iostream \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/sys/timeb.h \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/sys/timeb.h \
/usr/local/include/boost/uuid/uuid.hpp \ /usr/local/include/boost/uuid/uuid.hpp \
...@@ -1179,12 +1180,9 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \ ...@@ -1179,12 +1180,9 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \
/usr/local/include/nlohmann/detail/macro_unscope.hpp \ /usr/local/include/nlohmann/detail/macro_unscope.hpp \
/usr/local/include/nlohmann/thirdparty/hedley/hedley_undef.hpp \ /usr/local/include/nlohmann/thirdparty/hedley/hedley_undef.hpp \
../src/utility.h \ ../src/utility.h \
../src/forAudioAnalyser.h \ ../src/forAudioAnalyser.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/fstream
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/fstream:
/usr/local/include/nlohmann/thirdparty/hedley/hedley_undef.hpp: /usr/local/include/nlohmann/thirdparty/hedley/hedley_undef.hpp:
/usr/local/include/nlohmann/detail/output/serializer.hpp: /usr/local/include/nlohmann/detail/output/serializer.hpp:
...@@ -1651,12 +1649,6 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \ ...@@ -1651,12 +1649,6 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \
/usr/local/include/boost/mpl/identity.hpp: /usr/local/include/boost/mpl/identity.hpp:
/usr/local/include/boost/function_types/is_callable_builtin.hpp:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/sys/wait.h:
/usr/local/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp:
/usr/local/include/boost/mpl/reverse_fold.hpp: /usr/local/include/boost/mpl/reverse_fold.hpp:
/usr/local/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp: /usr/local/include/boost/mpl/aux_/preprocessed/gcc/template_arity.hpp:
...@@ -2501,6 +2493,8 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \ ...@@ -2501,6 +2493,8 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \
/usr/local/include/boost/static_assert.hpp: /usr/local/include/boost/static_assert.hpp:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/fstream:
/usr/local/Cellar/opencv/4.5.5_2/include/opencv4/opencv2/imgproc/segmentation.hpp: /usr/local/Cellar/opencv/4.5.5_2/include/opencv4/opencv2/imgproc/segmentation.hpp:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__algorithm/search_n.h: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__algorithm/search_n.h:
...@@ -3375,6 +3369,12 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \ ...@@ -3375,6 +3369,12 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: ../src/script.cpp \
/usr/local/include/boost/preprocessor/comparison/not_equal.hpp: /usr/local/include/boost/preprocessor/comparison/not_equal.hpp:
/usr/local/include/boost/function_types/is_callable_builtin.hpp:
/usr/local/include/boost/mpl/aux_/preprocessed/gcc/reverse_fold_impl.hpp:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/sys/wait.h:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/compare: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/compare:
/usr/local/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp: /usr/local/include/boost/mpl/aux_/preprocessed/gcc/quote.hpp:
......
...@@ -418,6 +418,7 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: \ ...@@ -418,6 +418,7 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/ostream \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/ostream \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/bitset \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/bitset \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__bit_reference \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/__bit_reference \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/fstream \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/iostream \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/iostream \
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/sys/timeb.h \ /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/sys/timeb.h \
/usr/local/include/boost/uuid/uuid.hpp \ /usr/local/include/boost/uuid/uuid.hpp \
...@@ -1176,5 +1177,4 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: \ ...@@ -1176,5 +1177,4 @@ CMakeFiles/frame_extraction.dir/src/script.cpp.o: \
/usr/local/include/nlohmann/detail/macro_unscope.hpp \ /usr/local/include/nlohmann/detail/macro_unscope.hpp \
/usr/local/include/nlohmann/thirdparty/hedley/hedley_undef.hpp \ /usr/local/include/nlohmann/thirdparty/hedley/hedley_undef.hpp \
/Users/nadir/Documents/MPAI-CAE/AIMs/VideoAnalyser/src/utility.h \ /Users/nadir/Documents/MPAI-CAE/AIMs/VideoAnalyser/src/utility.h \
/Users/nadir/Documents/MPAI-CAE/AIMs/VideoAnalyser/src/forAudioAnalyser.h \ /Users/nadir/Documents/MPAI-CAE/AIMs/VideoAnalyser/src/forAudioAnalyser.h
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX12.3.sdk/usr/include/c++/v1/fstream
...@@ -4,8 +4,8 @@ ...@@ -4,8 +4,8 @@
"OutputPath": "../output/", "OutputPath": "../output/",
"PreservationAudioVisualFile": "../input/BERIO060.mov", "PreservationAudioVisualFile": "../input/BERIO060.mov",
"Speed": 7.5, "Speed": 7.5,
"ThresholdPercentualTape": 80, "ThresholdPercentualTape": 77,
"ThresholdPercentualCapstan": 92, "ThresholdPercentualCapstan": 93,
"MinDist": 10, "MinDist": 10,
"AngleThresh": 10000, "AngleThresh": 10000,
"ScaleThresh": 200, "ScaleThresh": 200,
......
#include <vector>
#include <string.h>
#include <fstream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>
using namespace cv;
using namespace std;
namespace fs = std::__fs::filesystem;
using json = nlohmann::json; using json = nlohmann::json;
void extractIrregularityImagesForAudio(std::string outputPath, std::string videoPath, json irregularityFileInput, json &irregularityFileOutput2) { void extractIrregularityImagesForAudio(std::string outputPath, std::string videoPath, json irregularityFileInput, json &irregularityFileOutput2) {
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
@date 29-06-2022 @date 29-06-2022
*/ */
#include <filesystem> #include <filesystem>
#include <fstream>
#include <iostream> #include <iostream>
#include <sys/timeb.h> #include <sys/timeb.h>
...@@ -46,7 +47,7 @@ bool savingBrand = false; ...@@ -46,7 +47,7 @@ bool savingBrand = false;
cv::Mat myFrame; cv::Mat myFrame;
float mediaPrevFrame = 0; float mediaPrevFrame = 0;
bool firstBrand = true; // The first frame containing brands on tape must be saved bool firstBrand = true; // The first frame containing brands on tape must be saved
float firstBrandInstant = 0; float firstInstant = 0;
// config.json parameters // config.json parameters
bool brands; bool brands;
...@@ -185,26 +186,38 @@ bool frameDifference(cv::Mat prevFrame, cv::Mat currentFrame, int msToEnd) { ...@@ -185,26 +186,38 @@ bool frameDifference(cv::Mat prevFrame, cv::Mat currentFrame, int msToEnd) {
} }
mediaCurrFrame = totColoreCF/tapeAreaPixels; mediaCurrFrame = totColoreCF/tapeAreaPixels;
/************************************* Decision stage ****************************************/
if (blackPixels > tapeDifferentPixelsThreshold) { if (blackPixels > tapeDifferentPixelsThreshold) {
if (brands) { if (brands) {
/***** AVERAGE_COLOR-BASED DECISION *****/
if (mediaPrevFrame > (mediaCurrFrame + 10) || mediaPrevFrame < (mediaCurrFrame - 10)) { // They are not similar for color average if (mediaPrevFrame > (mediaCurrFrame + 10) || mediaPrevFrame < (mediaCurrFrame - 10)) { // They are not similar for color average
// Update mediaPrevFrame // Update mediaPrevFrame
mediaPrevFrame = mediaCurrFrame; mediaPrevFrame = mediaCurrFrame;
firstBrandInstant = msToEnd;
return true; return true;
} }
// If the above condition is not verified, update anyway mediaPrevFrame // If the above condition is not verified, update anyway mediaPrevFrame
mediaPrevFrame = mediaCurrFrame; mediaPrevFrame = mediaCurrFrame;
/***** BRANDS MANAGEMENT *****/
// At the beginning of the video, wait at least 1 second before the next Irregularity to consider it as a brand. // At the beginning of the video, wait at least 1 second before the next Irregularity to consider it as a brand.
// It is not guaranteed that it will be the first brand, but it is generally a safe approach to have a correct image // It is not guaranteed that it will be the first brand, but it is generally a safe approach to have a correct image
if (firstBrand && (firstBrandInstant - msToEnd > 1000)) { if (firstBrand && (firstInstant - msToEnd > 1000)) {
firstBrand = false; firstBrand = false;
savingBrand = true; savingBrand = true;
return true; return true;
} }
// In the following iterations reset savingBrand, since we are no longer interested in brands.
if (savingBrand)
savingBrand = false;
} else { } else {
// With no brands, overcoming the threshold is sufficient
return true; return true;
} }
} }
return false; return false;
...@@ -231,7 +244,7 @@ int processing(cv::VideoCapture videoCapture, std::string fileName) { ...@@ -231,7 +244,7 @@ int processing(cv::VideoCapture videoCapture, std::string fileName) {
// The first frame of the video won't be processed // The first frame of the video won't be processed
cv::Mat prevFrame; cv::Mat prevFrame;
videoCapture >> prevFrame; videoCapture >> prevFrame;
firstBrandInstant = videoLength_ms - videoCapture.get(CAP_PROP_POS_MSEC); firstInstant = videoLength_ms - videoCapture.get(CAP_PROP_POS_MSEC);
while (videoCapture.isOpened()) { while (videoCapture.isOpened()) {
...@@ -285,7 +298,7 @@ int processing(cv::VideoCapture videoCapture, std::string fileName) { ...@@ -285,7 +298,7 @@ int processing(cv::VideoCapture videoCapture, std::string fileName) {
std::string timeLabel = getTimeLabel(ms); std::string timeLabel = getTimeLabel(ms);
std::string safeTimeLabel = getSafeTimeLabel(ms); std::string safeTimeLabel = getSafeTimeLabel(ms);
saveIrregularityImage(safeTimeLabel, fileName, oddFrame, oddSubImage, savingPinchRoller); saveIrregularityImage(safeTimeLabel, fileName, oddFrame, oddSubImage, savingPinchRoller, savingBrand);
// Append Irregularity information to JSON // Append Irregularity information to JSON
boost::uuids::uuid uuid = boost::uuids::random_generator()(); boost::uuids::uuid uuid = boost::uuids::random_generator()();
...@@ -414,24 +427,32 @@ bool findProcessingAreas(json configurationFile) { ...@@ -414,24 +427,32 @@ bool findProcessingAreas(json configurationFile) {
RotatedRect rectPos = drawShapes(myFrame, positionsPos, Scalar(0, 0, 255), templateImageHalf.cols, templateImageHalf.rows, 0, 0, 2); RotatedRect rectPos = drawShapes(myFrame, positionsPos, Scalar(0, 0, 255), templateImageHalf.cols, templateImageHalf.rows, 0, 0, 2);
RotatedRect rectNeg = drawShapes(myFrame, positionsNeg, Scalar(128, 128, 255), templateImageHalf.cols, templateImageHalf.rows, 0, 0, 2); RotatedRect rectNeg = drawShapes(myFrame, positionsNeg, Scalar(128, 128, 255), templateImageHalf.cols, templateImageHalf.rows, 0, 0, 2);
ofstream myFile;
myFile.open("log.txt", ios::app);
Point2f pts[4]; Point2f pts[4];
if (rectPos.size.width > 0) if (rectPos.size.width > 0)
if (rectNeg.size.width > 0) if (rectNeg.size.width > 0)
if (votesPos.at<int>(0) > votesNeg.at<int>(0)) { if (votesPos.at<int>(0) > votesNeg.at<int>(0)) {
cout << "Positive is best" << endl; cout << "Positive is best." << endl;
myFile << "READING HEAD: Positive is best." << std::endl;
rect = rectPos; rect = rectPos;
} else { } else {
cout << "Negative is best" << endl; cout << "Negative is best." << endl;
myFile << "READING HEAD: Negative is best." << std::endl;
rect = rectNeg; rect = rectNeg;
} }
else { else {
cout << "Positive is the only choice." << endl; cout << "Positive is the only choice." << endl;
myFile << "READING HEAD: Positive is the only choice." << std::endl;
rect = rectPos; rect = rectPos;
} }
else if (rectNeg.size.width > 0) { else if (rectNeg.size.width > 0) {
cout << "Negative is the only choice." << endl; cout << "Negative is the only choice." << endl;
myFile << "READING HEAD: Negative is the only choice." << std::endl;
rect = rectNeg; rect = rectNeg;
} else { } else {
myFile.close();
return false; return false;
} }
cout << endl; cout << endl;
...@@ -490,27 +511,44 @@ bool findProcessingAreas(json configurationFile) { ...@@ -490,27 +511,44 @@ bool findProcessingAreas(json configurationFile) {
tm.stop(); tm.stop();
std::cout << "Tape detection time : " << tm.getTimeMilli() << " ms" << endl; std::cout << "Tape detection time : " << tm.getTimeMilli() << " ms" << endl;
RotatedRect rectTapePos = drawShapes(myFrame, positionsTapePos, Scalar(0, 255, 0), templateShape.cols, templateShape.rows, tapeProcessingAreaX, tapeProcessingAreaY, 1); RotatedRect rectTapePos = drawShapes(myFrame, positionsTapePos, Scalar(0, 255, 0), templateShape.cols, templateShape.rows, tapeProcessingAreaX, tapeProcessingAreaY, 1);
RotatedRect rectTapeNeg = drawShapes(myFrame, positionsTapeNeg, Scalar(128, 255, 128), templateShape.cols, templateShape.rows, tapeProcessingAreaX, tapeProcessingAreaY, 1); RotatedRect rectTapeNeg = drawShapes(myFrame, positionsTapeNeg, Scalar(192, 255, 192), templateShape.cols, templateShape.rows, tapeProcessingAreaX, tapeProcessingAreaY, 1);
if (rectTapePos.size.width > 0) if (rectTapePos.size.width > 0)
if (rectTapeNeg.size.width > 0) if (rectTapeNeg.size.width > 0)
if (votesTapePos.at<int>(0) > votesTapeNeg.at<int>(0)) { if (votesTapePos.at<int>(0) > votesTapeNeg.at<int>(0)) {
cout << "Positive is best" << endl; cout << "Positive is best." << endl;
myFile << "TAPE: Positive is best." << std::endl;
rectTape = rectTapePos; rectTape = rectTapePos;
} else { } else {
cout << "Negative is best" << endl; cout << "Negative is best." << endl;
myFile << "TAPE: Negative is best." << std::endl;
rectTape = rectTapeNeg; rectTape = rectTapeNeg;
} }
else { else {
cout << "Positive is the only choice." << endl; cout << "Positive is the only choice." << endl;
myFile << "TAPE: Positive is the only choice." << std::endl;
rectTape = rectTapePos; rectTape = rectTapePos;
} }
else if (rectTapeNeg.size.width > 0) { else if (rectTapeNeg.size.width > 0) {
cout << "Negative is the only choice." << endl; cout << "Negative is the only choice." << endl;
myFile << "TAPE: Negative is the only choice." << std::endl;
rectTape = rectTapeNeg; rectTape = rectTapeNeg;
} else { } else {
myFile.close();
return false; return false;
} }
if (rectTape.center.y < (rect.center.y + (rect.size.height + rectTape.size.height) * 0.45)) { // 0.45 is an arbitrary value, meaning that they are overlapping too much
cout << "Shifting down rectTape!" << endl;
myFile << "Shifting down rectTape!" << std::endl;
rectTape.center.y = rect.center.y + (rect.size.height + rectTape.size.height) * 0.45;
Point2f rrpts[4];
rectTape.points(rrpts);
line(myFrame, rrpts[0], rrpts[1], Scalar(255, 255, 255), 2);
line(myFrame, rrpts[1], rrpts[2], Scalar(255, 255, 255), 2);
line(myFrame, rrpts[2], rrpts[3], Scalar(255, 255, 255), 2);
line(myFrame, rrpts[3], rrpts[0], Scalar(255, 255, 255), 2);
}
cout << endl; cout << endl;
/******************************************* CAPSTAN DETECTION *******************************************/ /******************************************* CAPSTAN DETECTION *******************************************/
...@@ -565,27 +603,35 @@ bool findProcessingAreas(json configurationFile) { ...@@ -565,27 +603,35 @@ bool findProcessingAreas(json configurationFile) {
if (rectCapstanPos.size.width > 0) if (rectCapstanPos.size.width > 0)
if (rectCapstanNeg.size.width > 0) if (rectCapstanNeg.size.width > 0)
if (votesC1Pos.at<int>(0) > votesC1Neg.at<int>(0)) { if (votesC1Pos.at<int>(0) > votesC1Neg.at<int>(0)) {
cout << "Positive is best" << endl; cout << "Positive is best." << endl;
myFile << "CAPSTAN: Positive is best." << std::endl;
rectCapstan = rectCapstanPos; rectCapstan = rectCapstanPos;
} else { } else {
cout << "Negative is best" << endl; cout << "Negative is best." << endl;
myFile << "CAPSTAN: Negative is best." << std::endl;
rectCapstan = rectCapstanNeg; rectCapstan = rectCapstanNeg;
} }
else { else {
cout << "Positive is the only choice." << endl; cout << "Positive is the only choice." << endl;
myFile << "CAPSTAN: Positive is the only choice." << std::endl;
rectCapstan = rectCapstanPos; rectCapstan = rectCapstanPos;
} }
else if (rectTapeNeg.size.width > 0) { else if (rectTapeNeg.size.width > 0) {
cout << "Negative is the only choice." << endl; cout << "Negative is the only choice." << endl;
myFile << "CAPSTAN: Negative is the only choice." << std::endl;
rectCapstan = rectCapstanNeg; rectCapstan = rectCapstanNeg;
} else { } else {
myFile.close();
return false; return false;
} }
myFile.close();
cout << endl; cout << endl;
// Shows the detected areas // Show the image
// imshow("Tape area(s)", myFrame); // imshow("Tape area(s)", myFrame);
// waitKey(); // waitKey();
// Save the image containing the detected areas
cv::imwrite(outputPath + "/tapeAreas.jpg", myFrame);
return true; return true;
} }
...@@ -600,11 +646,29 @@ int main(int argc, char** argv) { ...@@ -600,11 +646,29 @@ int main(int argc, char** argv) {
iConfig >> configurationFile; iConfig >> configurationFile;
// Initialise parameters // Initialise parameters
try { try {
brands = configurationFile["Brands"]; if (argc == 1) {
// Read from JSON file
videoPath = configurationFile["PreservationAudioVisualFile"];
speed = configurationFile["Speed"];
brands = configurationFile["Brands"];
} else if (argc == 4) {
// Read from command line
videoPath = argv[1];
speed = std::stof(argv[2]);
if (strcmp(argv[3], "true") == 0)
brands = true;
else if (strcmp(argv[3], "false") == 0)
brands = false;
else {
std::cerr << "\033[1;31mArguments error!\033[0;31m\nBrands must be 'true' or 'false'." << std::endl;
return -1;
}
} else {
std::cerr << "\033[1;31mArguments error!\033[0;31m\nRun with no arguments to use input JSON, or run with argv[1] = 'path/to/input' and argv[2] = 'speed' arguments." << std::endl;
return -1;
}
irregularityFileInputPath = configurationFile["IrregularityFileInput"]; irregularityFileInputPath = configurationFile["IrregularityFileInput"];
outputPath = configurationFile["OutputPath"]; outputPath = configurationFile["OutputPath"];
videoPath = configurationFile["PreservationAudioVisualFile"];
speed = configurationFile["Speed"];
tapeThresholdPercentual = configurationFile["ThresholdPercentualTape"]; tapeThresholdPercentual = configurationFile["ThresholdPercentualTape"];
capstanThresholdPercentual = configurationFile["ThresholdPercentualCapstan"]; capstanThresholdPercentual = configurationFile["ThresholdPercentualCapstan"];
} catch (nlohmann::detail::type_error e) { } catch (nlohmann::detail::type_error e) {
...@@ -636,11 +700,16 @@ int main(int argc, char** argv) { ...@@ -636,11 +700,16 @@ int main(int argc, char** argv) {
} }
// Speed reference = 7.5 // Speed reference = 7.5
// If the speed is 15, then increase threshold percentual by 4 to have similar detection performance if (brands) {
if (speed == 15) if (speed == 15)
tapeThresholdPercentual += 4; tapeThresholdPercentual += 6;
} else
std::cout << "\nParameters from config.json file:" << std::endl; if (speed == 15)
tapeThresholdPercentual += 20;
else
tapeThresholdPercentual += 21;
std::cout << "\nParameters:" << std::endl;
std::cout << " Brands: " << brands << std::endl; std::cout << " Brands: " << brands << std::endl;
std::cout << " Speed: " << speed << std::endl; std::cout << " Speed: " << speed << std::endl;
std::cout << " ThresholdPercentual: " << tapeThresholdPercentual << std::endl; std::cout << " ThresholdPercentual: " << tapeThresholdPercentual << std::endl;
...@@ -650,6 +719,39 @@ int main(int argc, char** argv) { ...@@ -650,6 +719,39 @@ int main(int argc, char** argv) {
// Read input JSON // Read input JSON
iJSON >> irregularityFileInput; iJSON >> irregularityFileInput;
/********************************** MAKE GENERIC DIRECTORY **************************************/
// Get now time
std::time_t t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
struct tm *parts = std::localtime(&t);
int day = parts->tm_mday, month = parts->tm_mon + 1, year = parts->tm_year + 1900, hours = parts->tm_hour, minutes = parts->tm_min, seconds = parts->tm_sec;
std::string dayStr = std::to_string(day), monthStr = std::to_string(month), yearStr = std::to_string(year), hoursStr = std::to_string(hours), minutesStr = std::to_string(minutes), secondsStr = std::to_string(seconds);
if (day < 10)
dayStr = "0" + dayStr;
if (month < 10)
monthStr = "0" + monthStr;
if (hours < 10)
hoursStr = "0" + hoursStr;
if (minutes < 10)
minutesStr = "0" + minutesStr;
if (seconds < 10)
secondsStr = "0" + secondsStr;
// Make directory with fileName name
int outputFileNameDirectory = fs::create_directory(outputPath + fileName);
// Update output path
outputPath += fileName + "/" + yearStr + "-" + monthStr + "-" + dayStr + "_" + hoursStr + "-" + minutesStr + "-" + secondsStr + "/";
// Create a new directory named as the current time for multiple runs
int outputNowDirectory = fs::create_directory(outputPath);
// Get now time
std::string ts = std::ctime(&t);
ofstream myFile;
myFile.open("log.txt", ios::app);
myFile << endl << fileName << endl;
myFile << "tsh: " << tapeThresholdPercentual << " tshp: " << capstanThresholdPercentual << std::endl;
myFile << ts; // No endline character for avoiding middle blank line.
myFile.close();
/******************************************* TAPE AREA DETECTION *******************************************/ /******************************************* TAPE AREA DETECTION *******************************************/
cv::VideoCapture videoCapture(videoPath); cv::VideoCapture videoCapture(videoPath);
...@@ -673,15 +775,7 @@ int main(int argc, char** argv) { ...@@ -673,15 +775,7 @@ int main(int argc, char** argv) {
/**************************** WRITE USEFUL INFORMATION TO LOG FILE ***************************/ /**************************** WRITE USEFUL INFORMATION TO LOG FILE ***************************/
// Get now time
std::time_t t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::string ts = std::ctime(&t);
ofstream myFile;
myFile.open("log.txt", ios::app); myFile.open("log.txt", ios::app);
myFile << endl << fileName << endl;
myFile << "tsh: " << tapeThresholdPercentual << " tshp: " << capstanThresholdPercentual << std::endl;
myFile << ts; // No endline character for avoiding middle blank line.
if (found) { if (found) {
std::cout << "Processing areas found!" << endl; std::cout << "Processing areas found!" << endl;
myFile << "Processing areas found!" << endl; myFile << "Processing areas found!" << endl;
......
...@@ -9,29 +9,6 @@ FILE SYSTEM FUNCTIONS ...@@ -9,29 +9,6 @@ FILE SYSTEM FUNCTIONS
------------------------------------------------------------------------------ */ ------------------------------------------------------------------------------ */
void makeDirectories(std::string fileName, std::string outputPath, bool brands) { void makeDirectories(std::string fileName, std::string outputPath, bool brands) {
// Get now time
std::time_t t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
struct tm *parts = std::localtime(&t);
int day = parts->tm_mday, month = parts->tm_mon + 1, year = parts->tm_year + 1900, hours = parts->tm_hour, minutes = parts->tm_min, seconds = parts->tm_sec;
std::string dayStr = std::to_string(day), monthStr = std::to_string(month), yearStr = std::to_string(year), hoursStr = std::to_string(hours), minutesStr = std::to_string(minutes), secondsStr = std::to_string(seconds);
if (day < 10)
dayStr = "0" + dayStr;
if (month < 10)
monthStr = "0" + monthStr;
if (hours < 10)
hoursStr = "0" + hoursStr;
if (minutes < 10)
minutesStr = "0" + minutesStr;
if (seconds < 10)
secondsStr = "0" + secondsStr;
// Make directory with fileName name
int outputFileNameDirectory = fs::create_directory(outputPath + fileName);
// Update output path
outputPath += fileName + "/" + yearStr + "-" + monthStr + "-" + dayStr + "_" + hoursStr + "-" + minutesStr + "-" + secondsStr + "/";
// Create a new directory named as the current time for multiple runs
int outputNowDirectory = fs::create_directory(outputPath);
// Make output directories // Make output directories
pathBrand = outputPath + "/brand"; pathBrand = outputPath + "/brand";
pathFullFrame = outputPath + "/fullFrame"; pathFullFrame = outputPath + "/fullFrame";
...@@ -46,7 +23,7 @@ void makeDirectories(std::string fileName, std::string outputPath, bool brands) ...@@ -46,7 +23,7 @@ void makeDirectories(std::string fileName, std::string outputPath, bool brands)
int capsDirectory = fs::create_directory(pathEndTape); int capsDirectory = fs::create_directory(pathEndTape);
} }
void saveIrregularityImage(std::string safeTimeLabel, std::string fileName, cv::Mat frame, cv::Mat subFrame, bool endFrame) { void saveIrregularityImage(std::string safeTimeLabel, std::string fileName, cv::Mat frame, cv::Mat subFrame, bool endFrame, bool brandFrame) {
// if (savingPinchRoller) { // if (savingPinchRoller) {
// cv::imwrite(pathEndTape + "/" + fileName + "_" + safeTimeLabel + ".jpg", frame); // cv::imwrite(pathEndTape + "/" + fileName + "_" + safeTimeLabel + ".jpg", frame);
...@@ -58,10 +35,12 @@ void saveIrregularityImage(std::string safeTimeLabel, std::string fileName, cv:: ...@@ -58,10 +35,12 @@ void saveIrregularityImage(std::string safeTimeLabel, std::string fileName, cv::
// Writing image // Writing image
cv::imwrite(pathFullFrame + "/" + fileName + "_" + safeTimeLabel + ".jpg", frame); cv::imwrite(pathFullFrame + "/" + fileName + "_" + safeTimeLabel + ".jpg", frame);
if (!endFrame) { if (endFrame) {
cv::imwrite(pathTape + "/" + fileName + "_" + safeTimeLabel + ".jpg", subFrame);
} else {
cv::imwrite(pathEndTape + "/" + fileName + "_" + safeTimeLabel + ".jpg", subFrame); cv::imwrite(pathEndTape + "/" + fileName + "_" + safeTimeLabel + ".jpg", subFrame);
} else if (brandFrame) {
cv::imwrite(pathBrand + "/" + fileName + "_" + safeTimeLabel + ".jpg", subFrame);
} else {
cv::imwrite(pathTape + "/" + fileName + "_" + safeTimeLabel + ".jpg", subFrame);
} }
cv::Mat resized224Nas; cv::Mat resized224Nas;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment