Add recording to Shared Memory

This commit is contained in:
proitlab committed 2026-07-29 01:00:40 +07:00
1 parent bb7d08abff
commit a30643ddc7
24 files changed
+14583 -20

No files matched your search

+13265 -6
View File
File diff suppressed because it is too large. Load diff
+1
View File
@@ -72,6 +72,7 @@ set(SOURCES
src/rknn_yolo.cpp
src/config.cpp
src/drawing.cpp
src/video_writer.cpp
)
add_executable(bytetrack-counter ${SOURCES})
+77
View File
@@ -0,0 +1,77 @@
# SPEC — ByteTrack Counter C++
## §G — Goal
Real-time object detection + tracking + line-cross counting pipeline on RK3588 NPU.
Two-class (ayam|talenan). Ayam crossing → increment batch count.
Talenan crossing → close batch. Persist to SQLite + JSON.
## §C — Constraints
- RK3588 ARM64, RKNN NPU (librknnrt)
- Model `zenai_apc_cicalengka_20260609.rknn` — dynamic input shape
- C++17, OpenCV 4, Eigen3, SQLite3
- systemd service, root, `ProtectSystem=full`
- 2 classes: `ayam_class_id=0`, `talenan_class_id=1`
- Single counting line, crossing direction `rtl`|`ltr`|`both`
- Shift-based counting: day boundary at `DAILY_CUTOFF_TIME`
## §I — Interfaces
```
env: .env KEY=VALUE file — all config per config.env.example
env: LIVE_STREAM_FRAME_PATH → JPEG snapshot path (/dev/shm/bytetrack-counter/live_frame.jpg)
cmd: bytetrack-counter <config.env>
db: SQLite batches(id,counting_date,batch_number,camera_name,object_label,count,start_time,end_time)
db: SQLite daily_summaries(id,counting_date,camera_name,object_label,total_count,total_batches)
file: JSON state — batch_number,count,start_time,last_detection_time,counted_event_ids[]
file: CSV crossing log — batch,frame,timestamp,chicken_id
sig: SIGTERM|SIGINT → shutdown_requested → graceful exit
```
## §V — Invariants
```
V1: ∀ detection → score ≥ conf threshold before tracking
V2: rknn_set_input_shapes called before rknn_inputs_set (dynamic shape model !)
V3: ∀ track_id → counted ≤ once per batch (dedup via counted_event_ids)
V4: talenan crossing → close batch only after ignore_batch_label_timeout (30s) from batch start
V5: batch (count < min_object | duration < min_duration) → discard ⊥ persist
V6: batch inactivity ≥ batch_timeout (300s) → auto-close
V7: counting_date rolls at DAILY_CUTOFF_TIME → cutoff_watcher thread
V8: ayam & talenan → separate ByteTrack instances (match_thresh_0=0.8, match_thresh_1=0.6)
V9: live_stream_enabled → parent dir of LIVE_STREAM_FRAME_PATH created @ startup
V10: stale track (> TRACKED_PRUNE_SEC unseen) → prune from external tracking maps
V11: DIRECTORY for LIVE_STREAM_FRAME_PATH must exist — created by code and by tmpfiles.d on boot (/dev/shm is volatile)
```
## §T — Tasks
```
id|status|task|cites
T1|x|YOLO inference via RKNN NPU (letterbox, BGR2RGB, coordinate rescale)|V1,V2
T2|x|ByteTrack Kalman filter + two-stage IoU matching|V8
T3|x|Line-cross detection (rtl|ltr|both) with prev→current cx|V3
T4|x|Batch persistence: SQLite + JSON state file|V5,V6
T5|x|Batch dedup via counted_event_ids[]|V3
T6|x|Talenan-closes-batch logic with ignore-on-start timeout|V4
T7|x|Batch timeout thread (generational counter, detached)|V6
T8|x|Daily cutoff watcher thread|V7
T9|x|Optional motion detection skip-inference|C.motion
T10|x|Config from .env file (get_env with defaults)|I.env
T11|x|Drawing: HUD, hero count, line, boxes, popups, skeleton|-
T12|x|CsvLogger for crossing events|I.file
T13|x|Live JPEG snapshot to shared memory|V9
T14|x|systemd service with ProtectSystem + ReadWritePaths|I.cmd
T15|x|Graceful shutdown: SIGTERM → close batch → save state|I.sig
T16|x|Video per batch recording (config exists, impl ⊥ in C++) to shared memory for speed reason. To identify batch is between talenan (index=1), save with different name. Once completed, spawn new process (non blocking) to move recorded file to final destination (from config env). To identify first batch, record and wait X seconds (X default is 10 seconds, can be defined in config env), until first ayam (index=0) detected|-
T17|~?|Python DEBUG_TRACKING equivalent (per-frame score/track dump)|-
```
## §B — Bugs
```
id|date|cause|fix
```
(base empty — distilled from code, no bug history)
+2 -2
View File
@@ -81,12 +81,12 @@ clean: CMakeFiles/bytetrack-counter.dir/clean
CMakeFiles/bytetrack-counter.dir/all:
$(MAKE) $(MAKESILENT) -f CMakeFiles/bytetrack-counter.dir/build.make CMakeFiles/bytetrack-counter.dir/depend
$(MAKE) $(MAKESILENT) -f CMakeFiles/bytetrack-counter.dir/build.make CMakeFiles/bytetrack-counter.dir/build
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/opt/bytetrack-counter-cpp/build/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9 "Built target bytetrack-counter"
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --progress-dir=/opt/bytetrack-counter-cpp/build/CMakeFiles --progress-num=1,2,3,4,5,6,7,8,9,10 "Built target bytetrack-counter"
.PHONY : CMakeFiles/bytetrack-counter.dir/all
# Build rule for subdir invocation for target.
CMakeFiles/bytetrack-counter.dir/rule: cmake_check_build_system
$(CMAKE_COMMAND) -E cmake_progress_start /opt/bytetrack-counter-cpp/build/CMakeFiles 9
$(CMAKE_COMMAND) -E cmake_progress_start /opt/bytetrack-counter-cpp/build/CMakeFiles 10
$(MAKE) $(MAKESILENT) -f CMakeFiles/Makefile2 CMakeFiles/bytetrack-counter.dir/all
$(CMAKE_COMMAND) -E cmake_progress_start /opt/bytetrack-counter-cpp/build/CMakeFiles 0
.PHONY : CMakeFiles/bytetrack-counter.dir/rule
@@ -16,6 +16,7 @@ set(CMAKE_DEPENDS_DEPENDENCY_FILES
"/opt/bytetrack-counter-cpp/src/kalman_filter.cpp" "CMakeFiles/bytetrack-counter.dir/src/kalman_filter.cpp.o" "gcc" "CMakeFiles/bytetrack-counter.dir/src/kalman_filter.cpp.o.d"
"/opt/bytetrack-counter-cpp/src/main.cpp" "CMakeFiles/bytetrack-counter.dir/src/main.cpp.o" "gcc" "CMakeFiles/bytetrack-counter.dir/src/main.cpp.o.d"
"/opt/bytetrack-counter-cpp/src/rknn_yolo.cpp" "CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o" "gcc" "CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o.d"
"/opt/bytetrack-counter-cpp/src/video_writer.cpp" "CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o" "gcc" "CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o.d"
)
# Targets to which this target links which contain Fortran sources.
@@ -181,6 +181,20 @@ CMakeFiles/bytetrack-counter.dir/src/drawing.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/bytetrack-counter.dir/src/drawing.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /opt/bytetrack-counter-cpp/src/drawing.cpp -o CMakeFiles/bytetrack-counter.dir/src/drawing.cpp.s
CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o: CMakeFiles/bytetrack-counter.dir/flags.make
CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o: /opt/bytetrack-counter-cpp/src/video_writer.cpp
CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o: CMakeFiles/bytetrack-counter.dir/compiler_depend.ts
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --progress-dir=/opt/bytetrack-counter-cpp/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Building CXX object CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -MD -MT CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o -MF CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o.d -o CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o -c /opt/bytetrack-counter-cpp/src/video_writer.cpp
CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.i: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Preprocessing CXX source to CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.i"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -E /opt/bytetrack-counter-cpp/src/video_writer.cpp > CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.i
CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.s: cmake_force
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green "Compiling CXX source to assembly CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.s"
/usr/bin/c++ $(CXX_DEFINES) $(CXX_INCLUDES) $(CXX_FLAGS) -S /opt/bytetrack-counter-cpp/src/video_writer.cpp -o CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.s
# Object files for target bytetrack-counter
bytetrack__counter_OBJECTS = \
"CMakeFiles/bytetrack-counter.dir/src/main.cpp.o" \
@@ -190,7 +204,8 @@ bytetrack__counter_OBJECTS = \
"CMakeFiles/bytetrack-counter.dir/src/csv_logger.cpp.o" \
"CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o" \
"CMakeFiles/bytetrack-counter.dir/src/config.cpp.o" \
"CMakeFiles/bytetrack-counter.dir/src/drawing.cpp.o"
"CMakeFiles/bytetrack-counter.dir/src/drawing.cpp.o" \
"CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o"
# External object files for target bytetrack-counter
bytetrack__counter_EXTERNAL_OBJECTS =
@@ -203,6 +218,7 @@ bytetrack-counter: CMakeFiles/bytetrack-counter.dir/src/csv_logger.cpp.o
bytetrack-counter: CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o
bytetrack-counter: CMakeFiles/bytetrack-counter.dir/src/config.cpp.o
bytetrack-counter: CMakeFiles/bytetrack-counter.dir/src/drawing.cpp.o
bytetrack-counter: CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o
bytetrack-counter: CMakeFiles/bytetrack-counter.dir/build.make
bytetrack-counter: /usr/lib/aarch64-linux-gnu/libopencv_highgui.so.4.6.0
bytetrack-counter: /usr/lib/aarch64-linux-gnu/libsqlite3.so
@@ -212,7 +228,7 @@ bytetrack-counter: /usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.4.6.0
bytetrack-counter: /usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.4.6.0
bytetrack-counter: /usr/lib/aarch64-linux-gnu/libopencv_core.so.4.6.0
bytetrack-counter: CMakeFiles/bytetrack-counter.dir/link.txt
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/opt/bytetrack-counter-cpp/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_9) "Linking CXX executable bytetrack-counter"
@$(CMAKE_COMMAND) -E cmake_echo_color "--switch=$(COLOR)" --green --bold --progress-dir=/opt/bytetrack-counter-cpp/build/CMakeFiles --progress-num=$(CMAKE_PROGRESS_10) "Linking CXX executable bytetrack-counter"
$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/bytetrack-counter.dir/link.txt --verbose=$(VERBOSE)
# Rule to build all files generated by this target.
@@ -15,6 +15,8 @@ file(REMOVE_RECURSE
"CMakeFiles/bytetrack-counter.dir/src/main.cpp.o.d"
"CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o"
"CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o.d"
"CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o"
"CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o.d"
"bytetrack-counter"
"bytetrack-counter.pdb"
)
@@ -2157,6 +2157,7 @@ CMakeFiles/bytetrack-counter.dir/src/main.cpp.o
/opt/bytetrack-counter-cpp/src/kalman_filter.hpp
/opt/bytetrack-counter-cpp/src/nms.hpp
/opt/bytetrack-counter-cpp/src/rknn_yolo.hpp
/opt/bytetrack-counter-cpp/src/video_writer.hpp
/usr/include/aarch64-linux-gnu/asm/bitsperlong.h
/usr/include/aarch64-linux-gnu/asm/errno.h
/usr/include/aarch64-linux-gnu/asm/posix_types.h
@@ -3503,3 +3504,479 @@ CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o
/usr/lib/gcc/aarch64-linux-gnu/13/include/syslimits.h
/usr/local/include/rknn/rknn_api.h
CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o
/opt/bytetrack-counter-cpp/src/video_writer.cpp
/opt/bytetrack-counter-cpp/src/video_writer.hpp
/usr/include/aarch64-linux-gnu/asm/bitsperlong.h
/usr/include/aarch64-linux-gnu/asm/errno.h
/usr/include/aarch64-linux-gnu/asm/posix_types.h
/usr/include/aarch64-linux-gnu/asm/sigcontext.h
/usr/include/aarch64-linux-gnu/asm/sve_context.h
/usr/include/aarch64-linux-gnu/asm/types.h
/usr/include/aarch64-linux-gnu/bits/atomic_wide_counter.h
/usr/include/aarch64-linux-gnu/bits/byteswap.h
/usr/include/aarch64-linux-gnu/bits/confname.h
/usr/include/aarch64-linux-gnu/bits/cpu-set.h
/usr/include/aarch64-linux-gnu/bits/endian.h
/usr/include/aarch64-linux-gnu/bits/endianness.h
/usr/include/aarch64-linux-gnu/bits/environments.h
/usr/include/aarch64-linux-gnu/bits/errno.h
/usr/include/aarch64-linux-gnu/bits/floatn-common.h
/usr/include/aarch64-linux-gnu/bits/floatn.h
/usr/include/aarch64-linux-gnu/bits/flt-eval-method.h
/usr/include/aarch64-linux-gnu/bits/fp-fast.h
/usr/include/aarch64-linux-gnu/bits/fp-logb.h
/usr/include/aarch64-linux-gnu/bits/getopt_core.h
/usr/include/aarch64-linux-gnu/bits/getopt_posix.h
/usr/include/aarch64-linux-gnu/bits/iscanonical.h
/usr/include/aarch64-linux-gnu/bits/libc-header-start.h
/usr/include/aarch64-linux-gnu/bits/libm-simd-decl-stubs.h
/usr/include/aarch64-linux-gnu/bits/local_lim.h
/usr/include/aarch64-linux-gnu/bits/locale.h
/usr/include/aarch64-linux-gnu/bits/long-double.h
/usr/include/aarch64-linux-gnu/bits/math-vector.h
/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h
/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h
/usr/include/aarch64-linux-gnu/bits/mathcalls.h
/usr/include/aarch64-linux-gnu/bits/posix1_lim.h
/usr/include/aarch64-linux-gnu/bits/posix2_lim.h
/usr/include/aarch64-linux-gnu/bits/posix_opt.h
/usr/include/aarch64-linux-gnu/bits/procfs-extra.h
/usr/include/aarch64-linux-gnu/bits/procfs-id.h
/usr/include/aarch64-linux-gnu/bits/procfs-prregset.h
/usr/include/aarch64-linux-gnu/bits/procfs.h
/usr/include/aarch64-linux-gnu/bits/pthread_stack_min-dynamic.h
/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h
/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h
/usr/include/aarch64-linux-gnu/bits/sched.h
/usr/include/aarch64-linux-gnu/bits/select.h
/usr/include/aarch64-linux-gnu/bits/setjmp.h
/usr/include/aarch64-linux-gnu/bits/sigaction.h
/usr/include/aarch64-linux-gnu/bits/sigcontext.h
/usr/include/aarch64-linux-gnu/bits/sigevent-consts.h
/usr/include/aarch64-linux-gnu/bits/siginfo-arch.h
/usr/include/aarch64-linux-gnu/bits/siginfo-consts-arch.h
/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h
/usr/include/aarch64-linux-gnu/bits/signal_ext.h
/usr/include/aarch64-linux-gnu/bits/signum-arch.h
/usr/include/aarch64-linux-gnu/bits/signum-generic.h
/usr/include/aarch64-linux-gnu/bits/sigstack.h
/usr/include/aarch64-linux-gnu/bits/sigstksz.h
/usr/include/aarch64-linux-gnu/bits/sigthread.h
/usr/include/aarch64-linux-gnu/bits/ss_flags.h
/usr/include/aarch64-linux-gnu/bits/stdint-intn.h
/usr/include/aarch64-linux-gnu/bits/stdint-least.h
/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h
/usr/include/aarch64-linux-gnu/bits/stdio_lim.h
/usr/include/aarch64-linux-gnu/bits/stdlib-float.h
/usr/include/aarch64-linux-gnu/bits/struct_mutex.h
/usr/include/aarch64-linux-gnu/bits/struct_rwlock.h
/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h
/usr/include/aarch64-linux-gnu/bits/time.h
/usr/include/aarch64-linux-gnu/bits/time64.h
/usr/include/aarch64-linux-gnu/bits/timesize.h
/usr/include/aarch64-linux-gnu/bits/timex.h
/usr/include/aarch64-linux-gnu/bits/types.h
/usr/include/aarch64-linux-gnu/bits/types/FILE.h
/usr/include/aarch64-linux-gnu/bits/types/__FILE.h
/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h
/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h
/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h
/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h
/usr/include/aarch64-linux-gnu/bits/types/__sigset_t.h
/usr/include/aarch64-linux-gnu/bits/types/__sigval_t.h
/usr/include/aarch64-linux-gnu/bits/types/clock_t.h
/usr/include/aarch64-linux-gnu/bits/types/clockid_t.h
/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h
/usr/include/aarch64-linux-gnu/bits/types/error_t.h
/usr/include/aarch64-linux-gnu/bits/types/idtype_t.h
/usr/include/aarch64-linux-gnu/bits/types/locale_t.h
/usr/include/aarch64-linux-gnu/bits/types/mbstate_t.h
/usr/include/aarch64-linux-gnu/bits/types/sig_atomic_t.h
/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h
/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h
/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h
/usr/include/aarch64-linux-gnu/bits/types/sigval_t.h
/usr/include/aarch64-linux-gnu/bits/types/stack_t.h
/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h
/usr/include/aarch64-linux-gnu/bits/types/struct___jmp_buf_tag.h
/usr/include/aarch64-linux-gnu/bits/types/struct_itimerspec.h
/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h
/usr/include/aarch64-linux-gnu/bits/types/struct_sigstack.h
/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h
/usr/include/aarch64-linux-gnu/bits/types/struct_timeval.h
/usr/include/aarch64-linux-gnu/bits/types/struct_tm.h
/usr/include/aarch64-linux-gnu/bits/types/time_t.h
/usr/include/aarch64-linux-gnu/bits/types/timer_t.h
/usr/include/aarch64-linux-gnu/bits/types/wint_t.h
/usr/include/aarch64-linux-gnu/bits/typesizes.h
/usr/include/aarch64-linux-gnu/bits/uintn-identity.h
/usr/include/aarch64-linux-gnu/bits/uio_lim.h
/usr/include/aarch64-linux-gnu/bits/unistd_ext.h
/usr/include/aarch64-linux-gnu/bits/waitflags.h
/usr/include/aarch64-linux-gnu/bits/waitstatus.h
/usr/include/aarch64-linux-gnu/bits/wchar.h
/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h
/usr/include/aarch64-linux-gnu/bits/wordsize.h
/usr/include/aarch64-linux-gnu/bits/xopen_lim.h
/usr/include/aarch64-linux-gnu/c++/13/bits/atomic_word.h
/usr/include/aarch64-linux-gnu/c++/13/bits/basic_file.h
/usr/include/aarch64-linux-gnu/c++/13/bits/c++allocator.h
/usr/include/aarch64-linux-gnu/c++/13/bits/c++config.h
/usr/include/aarch64-linux-gnu/c++/13/bits/c++io.h
/usr/include/aarch64-linux-gnu/c++/13/bits/c++locale.h
/usr/include/aarch64-linux-gnu/c++/13/bits/cpu_defines.h
/usr/include/aarch64-linux-gnu/c++/13/bits/ctype_base.h
/usr/include/aarch64-linux-gnu/c++/13/bits/ctype_inline.h
/usr/include/aarch64-linux-gnu/c++/13/bits/error_constants.h
/usr/include/aarch64-linux-gnu/c++/13/bits/gthr-default.h
/usr/include/aarch64-linux-gnu/c++/13/bits/gthr.h
/usr/include/aarch64-linux-gnu/c++/13/bits/messages_members.h
/usr/include/aarch64-linux-gnu/c++/13/bits/os_defines.h
/usr/include/aarch64-linux-gnu/c++/13/bits/time_members.h
/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h
/usr/include/aarch64-linux-gnu/gnu/stubs.h
/usr/include/aarch64-linux-gnu/sys/cdefs.h
/usr/include/aarch64-linux-gnu/sys/procfs.h
/usr/include/aarch64-linux-gnu/sys/select.h
/usr/include/aarch64-linux-gnu/sys/single_threaded.h
/usr/include/aarch64-linux-gnu/sys/time.h
/usr/include/aarch64-linux-gnu/sys/types.h
/usr/include/aarch64-linux-gnu/sys/ucontext.h
/usr/include/aarch64-linux-gnu/sys/user.h
/usr/include/aarch64-linux-gnu/sys/wait.h
/usr/include/alloca.h
/usr/include/asm-generic/bitsperlong.h
/usr/include/asm-generic/errno-base.h
/usr/include/asm-generic/errno.h
/usr/include/asm-generic/int-ll64.h
/usr/include/asm-generic/posix_types.h
/usr/include/asm-generic/types.h
/usr/include/assert.h
/usr/include/c++/13/algorithm
/usr/include/c++/13/array
/usr/include/c++/13/backward/auto_ptr.h
/usr/include/c++/13/backward/binders.h
/usr/include/c++/13/bit
/usr/include/c++/13/bits/algorithmfwd.h
/usr/include/c++/13/bits/align.h
/usr/include/c++/13/bits/alloc_traits.h
/usr/include/c++/13/bits/allocated_ptr.h
/usr/include/c++/13/bits/allocator.h
/usr/include/c++/13/bits/atomic_base.h
/usr/include/c++/13/bits/atomic_lockfree_defines.h
/usr/include/c++/13/bits/basic_ios.h
/usr/include/c++/13/bits/basic_ios.tcc
/usr/include/c++/13/bits/basic_string.h
/usr/include/c++/13/bits/basic_string.tcc
/usr/include/c++/13/bits/char_traits.h
/usr/include/c++/13/bits/charconv.h
/usr/include/c++/13/bits/chrono.h
/usr/include/c++/13/bits/codecvt.h
/usr/include/c++/13/bits/concept_check.h
/usr/include/c++/13/bits/cpp_type_traits.h
/usr/include/c++/13/bits/cxxabi_forced.h
/usr/include/c++/13/bits/cxxabi_init_exception.h
/usr/include/c++/13/bits/deque.tcc
/usr/include/c++/13/bits/enable_special_members.h
/usr/include/c++/13/bits/erase_if.h
/usr/include/c++/13/bits/exception.h
/usr/include/c++/13/bits/exception_defines.h
/usr/include/c++/13/bits/exception_ptr.h
/usr/include/c++/13/bits/fs_dir.h
/usr/include/c++/13/bits/fs_fwd.h
/usr/include/c++/13/bits/fs_ops.h
/usr/include/c++/13/bits/fs_path.h
/usr/include/c++/13/bits/fstream.tcc
/usr/include/c++/13/bits/functexcept.h
/usr/include/c++/13/bits/functional_hash.h
/usr/include/c++/13/bits/hash_bytes.h
/usr/include/c++/13/bits/hashtable.h
/usr/include/c++/13/bits/hashtable_policy.h
/usr/include/c++/13/bits/invoke.h
/usr/include/c++/13/bits/ios_base.h
/usr/include/c++/13/bits/istream.tcc
/usr/include/c++/13/bits/list.tcc
/usr/include/c++/13/bits/locale_classes.h
/usr/include/c++/13/bits/locale_classes.tcc
/usr/include/c++/13/bits/locale_conv.h
/usr/include/c++/13/bits/locale_facets.h
/usr/include/c++/13/bits/locale_facets.tcc
/usr/include/c++/13/bits/locale_facets_nonio.h
/usr/include/c++/13/bits/locale_facets_nonio.tcc
/usr/include/c++/13/bits/localefwd.h
/usr/include/c++/13/bits/memory_resource.h
/usr/include/c++/13/bits/memoryfwd.h
/usr/include/c++/13/bits/move.h
/usr/include/c++/13/bits/nested_exception.h
/usr/include/c++/13/bits/new_allocator.h
/usr/include/c++/13/bits/node_handle.h
/usr/include/c++/13/bits/ostream.tcc
/usr/include/c++/13/bits/ostream_insert.h
/usr/include/c++/13/bits/parse_numbers.h
/usr/include/c++/13/bits/postypes.h
/usr/include/c++/13/bits/predefined_ops.h
/usr/include/c++/13/bits/ptr_traits.h
/usr/include/c++/13/bits/quoted_string.h
/usr/include/c++/13/bits/range_access.h
/usr/include/c++/13/bits/refwrap.h
/usr/include/c++/13/bits/requires_hosted.h
/usr/include/c++/13/bits/shared_ptr.h
/usr/include/c++/13/bits/shared_ptr_atomic.h
/usr/include/c++/13/bits/shared_ptr_base.h
/usr/include/c++/13/bits/specfun.h
/usr/include/c++/13/bits/sstream.tcc
/usr/include/c++/13/bits/std_abs.h
/usr/include/c++/13/bits/std_function.h
/usr/include/c++/13/bits/std_mutex.h
/usr/include/c++/13/bits/stl_algo.h
/usr/include/c++/13/bits/stl_algobase.h
/usr/include/c++/13/bits/stl_bvector.h
/usr/include/c++/13/bits/stl_construct.h
/usr/include/c++/13/bits/stl_deque.h
/usr/include/c++/13/bits/stl_function.h
/usr/include/c++/13/bits/stl_heap.h
/usr/include/c++/13/bits/stl_iterator.h
/usr/include/c++/13/bits/stl_iterator_base_funcs.h
/usr/include/c++/13/bits/stl_iterator_base_types.h
/usr/include/c++/13/bits/stl_list.h
/usr/include/c++/13/bits/stl_map.h
/usr/include/c++/13/bits/stl_multimap.h
/usr/include/c++/13/bits/stl_multiset.h
/usr/include/c++/13/bits/stl_pair.h
/usr/include/c++/13/bits/stl_queue.h
/usr/include/c++/13/bits/stl_raw_storage_iter.h
/usr/include/c++/13/bits/stl_relops.h
/usr/include/c++/13/bits/stl_set.h
/usr/include/c++/13/bits/stl_tempbuf.h
/usr/include/c++/13/bits/stl_tree.h
/usr/include/c++/13/bits/stl_uninitialized.h
/usr/include/c++/13/bits/stl_vector.h
/usr/include/c++/13/bits/streambuf.tcc
/usr/include/c++/13/bits/streambuf_iterator.h
/usr/include/c++/13/bits/string_view.tcc
/usr/include/c++/13/bits/stringfwd.h
/usr/include/c++/13/bits/uniform_int_dist.h
/usr/include/c++/13/bits/unique_lock.h
/usr/include/c++/13/bits/unique_ptr.h
/usr/include/c++/13/bits/unordered_map.h
/usr/include/c++/13/bits/uses_allocator.h
/usr/include/c++/13/bits/uses_allocator_args.h
/usr/include/c++/13/bits/utility.h
/usr/include/c++/13/bits/vector.tcc
/usr/include/c++/13/cctype
/usr/include/c++/13/cerrno
/usr/include/c++/13/cfloat
/usr/include/c++/13/chrono
/usr/include/c++/13/climits
/usr/include/c++/13/clocale
/usr/include/c++/13/cmath
/usr/include/c++/13/codecvt
/usr/include/c++/13/compare
/usr/include/c++/13/complex
/usr/include/c++/13/cstddef
/usr/include/c++/13/cstdint
/usr/include/c++/13/cstdio
/usr/include/c++/13/cstdlib
/usr/include/c++/13/cstring
/usr/include/c++/13/ctime
/usr/include/c++/13/cwchar
/usr/include/c++/13/cwctype
/usr/include/c++/13/debug/assertions.h
/usr/include/c++/13/debug/debug.h
/usr/include/c++/13/deque
/usr/include/c++/13/exception
/usr/include/c++/13/ext/aligned_buffer.h
/usr/include/c++/13/ext/alloc_traits.h
/usr/include/c++/13/ext/atomicity.h
/usr/include/c++/13/ext/concurrence.h
/usr/include/c++/13/ext/numeric_traits.h
/usr/include/c++/13/ext/string_conversions.h
/usr/include/c++/13/ext/type_traits.h
/usr/include/c++/13/filesystem
/usr/include/c++/13/fstream
/usr/include/c++/13/functional
/usr/include/c++/13/initializer_list
/usr/include/c++/13/iomanip
/usr/include/c++/13/ios
/usr/include/c++/13/iosfwd
/usr/include/c++/13/iostream
/usr/include/c++/13/istream
/usr/include/c++/13/limits
/usr/include/c++/13/list
/usr/include/c++/13/locale
/usr/include/c++/13/map
/usr/include/c++/13/math.h
/usr/include/c++/13/memory
/usr/include/c++/13/mutex
/usr/include/c++/13/new
/usr/include/c++/13/ostream
/usr/include/c++/13/pstl/execution_defs.h
/usr/include/c++/13/pstl/glue_algorithm_defs.h
/usr/include/c++/13/pstl/glue_memory_defs.h
/usr/include/c++/13/pstl/pstl_config.h
/usr/include/c++/13/queue
/usr/include/c++/13/ratio
/usr/include/c++/13/set
/usr/include/c++/13/sstream
/usr/include/c++/13/stdexcept
/usr/include/c++/13/stdlib.h
/usr/include/c++/13/streambuf
/usr/include/c++/13/string
/usr/include/c++/13/string_view
/usr/include/c++/13/system_error
/usr/include/c++/13/tr1/bessel_function.tcc
/usr/include/c++/13/tr1/beta_function.tcc
/usr/include/c++/13/tr1/ell_integral.tcc
/usr/include/c++/13/tr1/exp_integral.tcc
/usr/include/c++/13/tr1/gamma.tcc
/usr/include/c++/13/tr1/hypergeometric.tcc
/usr/include/c++/13/tr1/legendre_function.tcc
/usr/include/c++/13/tr1/modified_bessel_func.tcc
/usr/include/c++/13/tr1/poly_hermite.tcc
/usr/include/c++/13/tr1/poly_laguerre.tcc
/usr/include/c++/13/tr1/riemann_zeta.tcc
/usr/include/c++/13/tr1/special_function_util.h
/usr/include/c++/13/tuple
/usr/include/c++/13/type_traits
/usr/include/c++/13/typeinfo
/usr/include/c++/13/unordered_map
/usr/include/c++/13/utility
/usr/include/c++/13/vector
/usr/include/ctype.h
/usr/include/endian.h
/usr/include/errno.h
/usr/include/features-time64.h
/usr/include/features.h
/usr/include/libintl.h
/usr/include/limits.h
/usr/include/linux/close_range.h
/usr/include/linux/errno.h
/usr/include/linux/limits.h
/usr/include/linux/posix_types.h
/usr/include/linux/stddef.h
/usr/include/linux/types.h
/usr/include/locale.h
/usr/include/math.h
/usr/include/opencv4/opencv2/calib3d.hpp
/usr/include/opencv4/opencv2/core.hpp
/usr/include/opencv4/opencv2/core/affine.hpp
/usr/include/opencv4/opencv2/core/async.hpp
/usr/include/opencv4/opencv2/core/base.hpp
/usr/include/opencv4/opencv2/core/bufferpool.hpp
/usr/include/opencv4/opencv2/core/check.hpp
/usr/include/opencv4/opencv2/core/cuda.hpp
/usr/include/opencv4/opencv2/core/cuda.inl.hpp
/usr/include/opencv4/opencv2/core/cuda_types.hpp
/usr/include/opencv4/opencv2/core/cv_cpu_dispatch.h
/usr/include/opencv4/opencv2/core/cvdef.h
/usr/include/opencv4/opencv2/core/cvstd.hpp
/usr/include/opencv4/opencv2/core/cvstd.inl.hpp
/usr/include/opencv4/opencv2/core/cvstd_wrapper.hpp
/usr/include/opencv4/opencv2/core/fast_math.hpp
/usr/include/opencv4/opencv2/core/hal/interface.h
/usr/include/opencv4/opencv2/core/mat.hpp
/usr/include/opencv4/opencv2/core/mat.inl.hpp
/usr/include/opencv4/opencv2/core/matx.hpp
/usr/include/opencv4/opencv2/core/neon_utils.hpp
/usr/include/opencv4/opencv2/core/operations.hpp
/usr/include/opencv4/opencv2/core/optim.hpp
/usr/include/opencv4/opencv2/core/ovx.hpp
/usr/include/opencv4/opencv2/core/persistence.hpp
/usr/include/opencv4/opencv2/core/saturate.hpp
/usr/include/opencv4/opencv2/core/traits.hpp
/usr/include/opencv4/opencv2/core/types.hpp
/usr/include/opencv4/opencv2/core/utility.hpp
/usr/include/opencv4/opencv2/core/version.hpp
/usr/include/opencv4/opencv2/core/vsx_utils.hpp
/usr/include/opencv4/opencv2/dnn.hpp
/usr/include/opencv4/opencv2/dnn/dict.hpp
/usr/include/opencv4/opencv2/dnn/dnn.hpp
/usr/include/opencv4/opencv2/dnn/dnn.inl.hpp
/usr/include/opencv4/opencv2/dnn/layer.hpp
/usr/include/opencv4/opencv2/dnn/utils/inference_engine.hpp
/usr/include/opencv4/opencv2/dnn/version.hpp
/usr/include/opencv4/opencv2/features2d.hpp
/usr/include/opencv4/opencv2/flann.hpp
/usr/include/opencv4/opencv2/flann/all_indices.h
/usr/include/opencv4/opencv2/flann/allocator.h
/usr/include/opencv4/opencv2/flann/any.h
/usr/include/opencv4/opencv2/flann/autotuned_index.h
/usr/include/opencv4/opencv2/flann/composite_index.h
/usr/include/opencv4/opencv2/flann/config.h
/usr/include/opencv4/opencv2/flann/defines.h
/usr/include/opencv4/opencv2/flann/dist.h
/usr/include/opencv4/opencv2/flann/dynamic_bitset.h
/usr/include/opencv4/opencv2/flann/flann_base.hpp
/usr/include/opencv4/opencv2/flann/general.h
/usr/include/opencv4/opencv2/flann/ground_truth.h
/usr/include/opencv4/opencv2/flann/heap.h
/usr/include/opencv4/opencv2/flann/hierarchical_clustering_index.h
/usr/include/opencv4/opencv2/flann/index_testing.h
/usr/include/opencv4/opencv2/flann/kdtree_index.h
/usr/include/opencv4/opencv2/flann/kdtree_single_index.h
/usr/include/opencv4/opencv2/flann/kmeans_index.h
/usr/include/opencv4/opencv2/flann/linear_index.h
/usr/include/opencv4/opencv2/flann/logger.h
/usr/include/opencv4/opencv2/flann/lsh_index.h
/usr/include/opencv4/opencv2/flann/lsh_table.h
/usr/include/opencv4/opencv2/flann/matrix.h
/usr/include/opencv4/opencv2/flann/miniflann.hpp
/usr/include/opencv4/opencv2/flann/nn_index.h
/usr/include/opencv4/opencv2/flann/params.h
/usr/include/opencv4/opencv2/flann/random.h
/usr/include/opencv4/opencv2/flann/result_set.h
/usr/include/opencv4/opencv2/flann/sampling.h
/usr/include/opencv4/opencv2/flann/saving.h
/usr/include/opencv4/opencv2/flann/timer.h
/usr/include/opencv4/opencv2/highgui.hpp
/usr/include/opencv4/opencv2/imgcodecs.hpp
/usr/include/opencv4/opencv2/imgproc.hpp
/usr/include/opencv4/opencv2/imgproc/segmentation.hpp
/usr/include/opencv4/opencv2/ml.hpp
/usr/include/opencv4/opencv2/ml/ml.inl.hpp
/usr/include/opencv4/opencv2/objdetect.hpp
/usr/include/opencv4/opencv2/objdetect/detection_based_tracker.hpp
/usr/include/opencv4/opencv2/objdetect/face.hpp
/usr/include/opencv4/opencv2/opencv.hpp
/usr/include/opencv4/opencv2/opencv_modules.hpp
/usr/include/opencv4/opencv2/photo.hpp
/usr/include/opencv4/opencv2/stitching.hpp
/usr/include/opencv4/opencv2/stitching/detail/blenders.hpp
/usr/include/opencv4/opencv2/stitching/detail/camera.hpp
/usr/include/opencv4/opencv2/stitching/detail/exposure_compensate.hpp
/usr/include/opencv4/opencv2/stitching/detail/matchers.hpp
/usr/include/opencv4/opencv2/stitching/detail/motion_estimators.hpp
/usr/include/opencv4/opencv2/stitching/detail/seam_finders.hpp
/usr/include/opencv4/opencv2/stitching/detail/util.hpp
/usr/include/opencv4/opencv2/stitching/detail/util_inl.hpp
/usr/include/opencv4/opencv2/stitching/detail/warpers.hpp
/usr/include/opencv4/opencv2/stitching/detail/warpers_inl.hpp
/usr/include/opencv4/opencv2/stitching/warpers.hpp
/usr/include/opencv4/opencv2/video.hpp
/usr/include/opencv4/opencv2/video/background_segm.hpp
/usr/include/opencv4/opencv2/video/tracking.hpp
/usr/include/opencv4/opencv2/videoio.hpp
/usr/include/pthread.h
/usr/include/sched.h
/usr/include/signal.h
/usr/include/stdc-predef.h
/usr/include/stdint.h
/usr/include/stdio.h
/usr/include/stdlib.h
/usr/include/string.h
/usr/include/strings.h
/usr/include/time.h
/usr/include/unistd.h
/usr/include/wchar.h
/usr/include/wctype.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/arm_bf16.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/arm_fp16.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/arm_neon.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/float.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/limits.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/stdarg.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/stddef.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/stdint.h
/usr/lib/gcc/aarch64-linux-gnu/13/include/syslimits.h
@@ -2150,6 +2150,7 @@ CMakeFiles/bytetrack-counter.dir/src/main.cpp.o: /opt/bytetrack-counter-cpp/src/
/opt/bytetrack-counter-cpp/src/kalman_filter.hpp \
/opt/bytetrack-counter-cpp/src/nms.hpp \
/opt/bytetrack-counter-cpp/src/rknn_yolo.hpp \
/opt/bytetrack-counter-cpp/src/video_writer.hpp \
/usr/include/aarch64-linux-gnu/asm/bitsperlong.h \
/usr/include/aarch64-linux-gnu/asm/errno.h \
/usr/include/aarch64-linux-gnu/asm/posix_types.h \
@@ -3495,6 +3496,485 @@ CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o: /opt/bytetrack-counter-cpp
/usr/lib/gcc/aarch64-linux-gnu/13/include/syslimits.h \
/usr/local/include/rknn/rknn_api.h
CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o: /opt/bytetrack-counter-cpp/src/video_writer.cpp \
/opt/bytetrack-counter-cpp/src/video_writer.hpp \
/usr/include/aarch64-linux-gnu/asm/bitsperlong.h \
/usr/include/aarch64-linux-gnu/asm/errno.h \
/usr/include/aarch64-linux-gnu/asm/posix_types.h \
/usr/include/aarch64-linux-gnu/asm/sigcontext.h \
/usr/include/aarch64-linux-gnu/asm/sve_context.h \
/usr/include/aarch64-linux-gnu/asm/types.h \
/usr/include/aarch64-linux-gnu/bits/atomic_wide_counter.h \
/usr/include/aarch64-linux-gnu/bits/byteswap.h \
/usr/include/aarch64-linux-gnu/bits/confname.h \
/usr/include/aarch64-linux-gnu/bits/cpu-set.h \
/usr/include/aarch64-linux-gnu/bits/endian.h \
/usr/include/aarch64-linux-gnu/bits/endianness.h \
/usr/include/aarch64-linux-gnu/bits/environments.h \
/usr/include/aarch64-linux-gnu/bits/errno.h \
/usr/include/aarch64-linux-gnu/bits/floatn-common.h \
/usr/include/aarch64-linux-gnu/bits/floatn.h \
/usr/include/aarch64-linux-gnu/bits/flt-eval-method.h \
/usr/include/aarch64-linux-gnu/bits/fp-fast.h \
/usr/include/aarch64-linux-gnu/bits/fp-logb.h \
/usr/include/aarch64-linux-gnu/bits/getopt_core.h \
/usr/include/aarch64-linux-gnu/bits/getopt_posix.h \
/usr/include/aarch64-linux-gnu/bits/iscanonical.h \
/usr/include/aarch64-linux-gnu/bits/libc-header-start.h \
/usr/include/aarch64-linux-gnu/bits/libm-simd-decl-stubs.h \
/usr/include/aarch64-linux-gnu/bits/local_lim.h \
/usr/include/aarch64-linux-gnu/bits/locale.h \
/usr/include/aarch64-linux-gnu/bits/long-double.h \
/usr/include/aarch64-linux-gnu/bits/math-vector.h \
/usr/include/aarch64-linux-gnu/bits/mathcalls-helper-functions.h \
/usr/include/aarch64-linux-gnu/bits/mathcalls-narrow.h \
/usr/include/aarch64-linux-gnu/bits/mathcalls.h \
/usr/include/aarch64-linux-gnu/bits/posix1_lim.h \
/usr/include/aarch64-linux-gnu/bits/posix2_lim.h \
/usr/include/aarch64-linux-gnu/bits/posix_opt.h \
/usr/include/aarch64-linux-gnu/bits/procfs-extra.h \
/usr/include/aarch64-linux-gnu/bits/procfs-id.h \
/usr/include/aarch64-linux-gnu/bits/procfs-prregset.h \
/usr/include/aarch64-linux-gnu/bits/procfs.h \
/usr/include/aarch64-linux-gnu/bits/pthread_stack_min-dynamic.h \
/usr/include/aarch64-linux-gnu/bits/pthreadtypes-arch.h \
/usr/include/aarch64-linux-gnu/bits/pthreadtypes.h \
/usr/include/aarch64-linux-gnu/bits/sched.h \
/usr/include/aarch64-linux-gnu/bits/select.h \
/usr/include/aarch64-linux-gnu/bits/setjmp.h \
/usr/include/aarch64-linux-gnu/bits/sigaction.h \
/usr/include/aarch64-linux-gnu/bits/sigcontext.h \
/usr/include/aarch64-linux-gnu/bits/sigevent-consts.h \
/usr/include/aarch64-linux-gnu/bits/siginfo-arch.h \
/usr/include/aarch64-linux-gnu/bits/siginfo-consts-arch.h \
/usr/include/aarch64-linux-gnu/bits/siginfo-consts.h \
/usr/include/aarch64-linux-gnu/bits/signal_ext.h \
/usr/include/aarch64-linux-gnu/bits/signum-arch.h \
/usr/include/aarch64-linux-gnu/bits/signum-generic.h \
/usr/include/aarch64-linux-gnu/bits/sigstack.h \
/usr/include/aarch64-linux-gnu/bits/sigstksz.h \
/usr/include/aarch64-linux-gnu/bits/sigthread.h \
/usr/include/aarch64-linux-gnu/bits/ss_flags.h \
/usr/include/aarch64-linux-gnu/bits/stdint-intn.h \
/usr/include/aarch64-linux-gnu/bits/stdint-least.h \
/usr/include/aarch64-linux-gnu/bits/stdint-uintn.h \
/usr/include/aarch64-linux-gnu/bits/stdio_lim.h \
/usr/include/aarch64-linux-gnu/bits/stdlib-float.h \
/usr/include/aarch64-linux-gnu/bits/struct_mutex.h \
/usr/include/aarch64-linux-gnu/bits/struct_rwlock.h \
/usr/include/aarch64-linux-gnu/bits/thread-shared-types.h \
/usr/include/aarch64-linux-gnu/bits/time.h \
/usr/include/aarch64-linux-gnu/bits/time64.h \
/usr/include/aarch64-linux-gnu/bits/timesize.h \
/usr/include/aarch64-linux-gnu/bits/timex.h \
/usr/include/aarch64-linux-gnu/bits/types.h \
/usr/include/aarch64-linux-gnu/bits/types/FILE.h \
/usr/include/aarch64-linux-gnu/bits/types/__FILE.h \
/usr/include/aarch64-linux-gnu/bits/types/__fpos64_t.h \
/usr/include/aarch64-linux-gnu/bits/types/__fpos_t.h \
/usr/include/aarch64-linux-gnu/bits/types/__locale_t.h \
/usr/include/aarch64-linux-gnu/bits/types/__mbstate_t.h \
/usr/include/aarch64-linux-gnu/bits/types/__sigset_t.h \
/usr/include/aarch64-linux-gnu/bits/types/__sigval_t.h \
/usr/include/aarch64-linux-gnu/bits/types/clock_t.h \
/usr/include/aarch64-linux-gnu/bits/types/clockid_t.h \
/usr/include/aarch64-linux-gnu/bits/types/cookie_io_functions_t.h \
/usr/include/aarch64-linux-gnu/bits/types/error_t.h \
/usr/include/aarch64-linux-gnu/bits/types/idtype_t.h \
/usr/include/aarch64-linux-gnu/bits/types/locale_t.h \
/usr/include/aarch64-linux-gnu/bits/types/mbstate_t.h \
/usr/include/aarch64-linux-gnu/bits/types/sig_atomic_t.h \
/usr/include/aarch64-linux-gnu/bits/types/sigevent_t.h \
/usr/include/aarch64-linux-gnu/bits/types/siginfo_t.h \
/usr/include/aarch64-linux-gnu/bits/types/sigset_t.h \
/usr/include/aarch64-linux-gnu/bits/types/sigval_t.h \
/usr/include/aarch64-linux-gnu/bits/types/stack_t.h \
/usr/include/aarch64-linux-gnu/bits/types/struct_FILE.h \
/usr/include/aarch64-linux-gnu/bits/types/struct___jmp_buf_tag.h \
/usr/include/aarch64-linux-gnu/bits/types/struct_itimerspec.h \
/usr/include/aarch64-linux-gnu/bits/types/struct_sched_param.h \
/usr/include/aarch64-linux-gnu/bits/types/struct_sigstack.h \
/usr/include/aarch64-linux-gnu/bits/types/struct_timespec.h \
/usr/include/aarch64-linux-gnu/bits/types/struct_timeval.h \
/usr/include/aarch64-linux-gnu/bits/types/struct_tm.h \
/usr/include/aarch64-linux-gnu/bits/types/time_t.h \
/usr/include/aarch64-linux-gnu/bits/types/timer_t.h \
/usr/include/aarch64-linux-gnu/bits/types/wint_t.h \
/usr/include/aarch64-linux-gnu/bits/typesizes.h \
/usr/include/aarch64-linux-gnu/bits/uintn-identity.h \
/usr/include/aarch64-linux-gnu/bits/uio_lim.h \
/usr/include/aarch64-linux-gnu/bits/unistd_ext.h \
/usr/include/aarch64-linux-gnu/bits/waitflags.h \
/usr/include/aarch64-linux-gnu/bits/waitstatus.h \
/usr/include/aarch64-linux-gnu/bits/wchar.h \
/usr/include/aarch64-linux-gnu/bits/wctype-wchar.h \
/usr/include/aarch64-linux-gnu/bits/wordsize.h \
/usr/include/aarch64-linux-gnu/bits/xopen_lim.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/atomic_word.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/basic_file.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/c++allocator.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/c++config.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/c++io.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/c++locale.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/cpu_defines.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/ctype_base.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/ctype_inline.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/error_constants.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/gthr-default.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/gthr.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/messages_members.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/os_defines.h \
/usr/include/aarch64-linux-gnu/c++/13/bits/time_members.h \
/usr/include/aarch64-linux-gnu/gnu/stubs-lp64.h \
/usr/include/aarch64-linux-gnu/gnu/stubs.h \
/usr/include/aarch64-linux-gnu/sys/cdefs.h \
/usr/include/aarch64-linux-gnu/sys/procfs.h \
/usr/include/aarch64-linux-gnu/sys/select.h \
/usr/include/aarch64-linux-gnu/sys/single_threaded.h \
/usr/include/aarch64-linux-gnu/sys/time.h \
/usr/include/aarch64-linux-gnu/sys/types.h \
/usr/include/aarch64-linux-gnu/sys/ucontext.h \
/usr/include/aarch64-linux-gnu/sys/user.h \
/usr/include/aarch64-linux-gnu/sys/wait.h \
/usr/include/alloca.h \
/usr/include/asm-generic/bitsperlong.h \
/usr/include/asm-generic/errno-base.h \
/usr/include/asm-generic/errno.h \
/usr/include/asm-generic/int-ll64.h \
/usr/include/asm-generic/posix_types.h \
/usr/include/asm-generic/types.h \
/usr/include/assert.h \
/usr/include/c++/13/algorithm \
/usr/include/c++/13/array \
/usr/include/c++/13/backward/auto_ptr.h \
/usr/include/c++/13/backward/binders.h \
/usr/include/c++/13/bit \
/usr/include/c++/13/bits/algorithmfwd.h \
/usr/include/c++/13/bits/align.h \
/usr/include/c++/13/bits/alloc_traits.h \
/usr/include/c++/13/bits/allocated_ptr.h \
/usr/include/c++/13/bits/allocator.h \
/usr/include/c++/13/bits/atomic_base.h \
/usr/include/c++/13/bits/atomic_lockfree_defines.h \
/usr/include/c++/13/bits/basic_ios.h \
/usr/include/c++/13/bits/basic_ios.tcc \
/usr/include/c++/13/bits/basic_string.h \
/usr/include/c++/13/bits/basic_string.tcc \
/usr/include/c++/13/bits/char_traits.h \
/usr/include/c++/13/bits/charconv.h \
/usr/include/c++/13/bits/chrono.h \
/usr/include/c++/13/bits/codecvt.h \
/usr/include/c++/13/bits/concept_check.h \
/usr/include/c++/13/bits/cpp_type_traits.h \
/usr/include/c++/13/bits/cxxabi_forced.h \
/usr/include/c++/13/bits/cxxabi_init_exception.h \
/usr/include/c++/13/bits/deque.tcc \
/usr/include/c++/13/bits/enable_special_members.h \
/usr/include/c++/13/bits/erase_if.h \
/usr/include/c++/13/bits/exception.h \
/usr/include/c++/13/bits/exception_defines.h \
/usr/include/c++/13/bits/exception_ptr.h \
/usr/include/c++/13/bits/fs_dir.h \
/usr/include/c++/13/bits/fs_fwd.h \
/usr/include/c++/13/bits/fs_ops.h \
/usr/include/c++/13/bits/fs_path.h \
/usr/include/c++/13/bits/fstream.tcc \
/usr/include/c++/13/bits/functexcept.h \
/usr/include/c++/13/bits/functional_hash.h \
/usr/include/c++/13/bits/hash_bytes.h \
/usr/include/c++/13/bits/hashtable.h \
/usr/include/c++/13/bits/hashtable_policy.h \
/usr/include/c++/13/bits/invoke.h \
/usr/include/c++/13/bits/ios_base.h \
/usr/include/c++/13/bits/istream.tcc \
/usr/include/c++/13/bits/list.tcc \
/usr/include/c++/13/bits/locale_classes.h \
/usr/include/c++/13/bits/locale_classes.tcc \
/usr/include/c++/13/bits/locale_conv.h \
/usr/include/c++/13/bits/locale_facets.h \
/usr/include/c++/13/bits/locale_facets.tcc \
/usr/include/c++/13/bits/locale_facets_nonio.h \
/usr/include/c++/13/bits/locale_facets_nonio.tcc \
/usr/include/c++/13/bits/localefwd.h \
/usr/include/c++/13/bits/memory_resource.h \
/usr/include/c++/13/bits/memoryfwd.h \
/usr/include/c++/13/bits/move.h \
/usr/include/c++/13/bits/nested_exception.h \
/usr/include/c++/13/bits/new_allocator.h \
/usr/include/c++/13/bits/node_handle.h \
/usr/include/c++/13/bits/ostream.tcc \
/usr/include/c++/13/bits/ostream_insert.h \
/usr/include/c++/13/bits/parse_numbers.h \
/usr/include/c++/13/bits/postypes.h \
/usr/include/c++/13/bits/predefined_ops.h \
/usr/include/c++/13/bits/ptr_traits.h \
/usr/include/c++/13/bits/quoted_string.h \
/usr/include/c++/13/bits/range_access.h \
/usr/include/c++/13/bits/refwrap.h \
/usr/include/c++/13/bits/requires_hosted.h \
/usr/include/c++/13/bits/shared_ptr.h \
/usr/include/c++/13/bits/shared_ptr_atomic.h \
/usr/include/c++/13/bits/shared_ptr_base.h \
/usr/include/c++/13/bits/specfun.h \
/usr/include/c++/13/bits/sstream.tcc \
/usr/include/c++/13/bits/std_abs.h \
/usr/include/c++/13/bits/std_function.h \
/usr/include/c++/13/bits/std_mutex.h \
/usr/include/c++/13/bits/stl_algo.h \
/usr/include/c++/13/bits/stl_algobase.h \
/usr/include/c++/13/bits/stl_bvector.h \
/usr/include/c++/13/bits/stl_construct.h \
/usr/include/c++/13/bits/stl_deque.h \
/usr/include/c++/13/bits/stl_function.h \
/usr/include/c++/13/bits/stl_heap.h \
/usr/include/c++/13/bits/stl_iterator.h \
/usr/include/c++/13/bits/stl_iterator_base_funcs.h \
/usr/include/c++/13/bits/stl_iterator_base_types.h \
/usr/include/c++/13/bits/stl_list.h \
/usr/include/c++/13/bits/stl_map.h \
/usr/include/c++/13/bits/stl_multimap.h \
/usr/include/c++/13/bits/stl_multiset.h \
/usr/include/c++/13/bits/stl_pair.h \
/usr/include/c++/13/bits/stl_queue.h \
/usr/include/c++/13/bits/stl_raw_storage_iter.h \
/usr/include/c++/13/bits/stl_relops.h \
/usr/include/c++/13/bits/stl_set.h \
/usr/include/c++/13/bits/stl_tempbuf.h \
/usr/include/c++/13/bits/stl_tree.h \
/usr/include/c++/13/bits/stl_uninitialized.h \
/usr/include/c++/13/bits/stl_vector.h \
/usr/include/c++/13/bits/streambuf.tcc \
/usr/include/c++/13/bits/streambuf_iterator.h \
/usr/include/c++/13/bits/string_view.tcc \
/usr/include/c++/13/bits/stringfwd.h \
/usr/include/c++/13/bits/uniform_int_dist.h \
/usr/include/c++/13/bits/unique_lock.h \
/usr/include/c++/13/bits/unique_ptr.h \
/usr/include/c++/13/bits/unordered_map.h \
/usr/include/c++/13/bits/uses_allocator.h \
/usr/include/c++/13/bits/uses_allocator_args.h \
/usr/include/c++/13/bits/utility.h \
/usr/include/c++/13/bits/vector.tcc \
/usr/include/c++/13/cctype \
/usr/include/c++/13/cerrno \
/usr/include/c++/13/cfloat \
/usr/include/c++/13/chrono \
/usr/include/c++/13/climits \
/usr/include/c++/13/clocale \
/usr/include/c++/13/cmath \
/usr/include/c++/13/codecvt \
/usr/include/c++/13/compare \
/usr/include/c++/13/complex \
/usr/include/c++/13/cstddef \
/usr/include/c++/13/cstdint \
/usr/include/c++/13/cstdio \
/usr/include/c++/13/cstdlib \
/usr/include/c++/13/cstring \
/usr/include/c++/13/ctime \
/usr/include/c++/13/cwchar \
/usr/include/c++/13/cwctype \
/usr/include/c++/13/debug/assertions.h \
/usr/include/c++/13/debug/debug.h \
/usr/include/c++/13/deque \
/usr/include/c++/13/exception \
/usr/include/c++/13/ext/aligned_buffer.h \
/usr/include/c++/13/ext/alloc_traits.h \
/usr/include/c++/13/ext/atomicity.h \
/usr/include/c++/13/ext/concurrence.h \
/usr/include/c++/13/ext/numeric_traits.h \
/usr/include/c++/13/ext/string_conversions.h \
/usr/include/c++/13/ext/type_traits.h \
/usr/include/c++/13/filesystem \
/usr/include/c++/13/fstream \
/usr/include/c++/13/functional \
/usr/include/c++/13/initializer_list \
/usr/include/c++/13/iomanip \
/usr/include/c++/13/ios \
/usr/include/c++/13/iosfwd \
/usr/include/c++/13/iostream \
/usr/include/c++/13/istream \
/usr/include/c++/13/limits \
/usr/include/c++/13/list \
/usr/include/c++/13/locale \
/usr/include/c++/13/map \
/usr/include/c++/13/math.h \
/usr/include/c++/13/memory \
/usr/include/c++/13/mutex \
/usr/include/c++/13/new \
/usr/include/c++/13/ostream \
/usr/include/c++/13/pstl/execution_defs.h \
/usr/include/c++/13/pstl/glue_algorithm_defs.h \
/usr/include/c++/13/pstl/glue_memory_defs.h \
/usr/include/c++/13/pstl/pstl_config.h \
/usr/include/c++/13/queue \
/usr/include/c++/13/ratio \
/usr/include/c++/13/set \
/usr/include/c++/13/sstream \
/usr/include/c++/13/stdexcept \
/usr/include/c++/13/stdlib.h \
/usr/include/c++/13/streambuf \
/usr/include/c++/13/string \
/usr/include/c++/13/string_view \
/usr/include/c++/13/system_error \
/usr/include/c++/13/tr1/bessel_function.tcc \
/usr/include/c++/13/tr1/beta_function.tcc \
/usr/include/c++/13/tr1/ell_integral.tcc \
/usr/include/c++/13/tr1/exp_integral.tcc \
/usr/include/c++/13/tr1/gamma.tcc \
/usr/include/c++/13/tr1/hypergeometric.tcc \
/usr/include/c++/13/tr1/legendre_function.tcc \
/usr/include/c++/13/tr1/modified_bessel_func.tcc \
/usr/include/c++/13/tr1/poly_hermite.tcc \
/usr/include/c++/13/tr1/poly_laguerre.tcc \
/usr/include/c++/13/tr1/riemann_zeta.tcc \
/usr/include/c++/13/tr1/special_function_util.h \
/usr/include/c++/13/tuple \
/usr/include/c++/13/type_traits \
/usr/include/c++/13/typeinfo \
/usr/include/c++/13/unordered_map \
/usr/include/c++/13/utility \
/usr/include/c++/13/vector \
/usr/include/ctype.h \
/usr/include/endian.h \
/usr/include/errno.h \
/usr/include/features-time64.h \
/usr/include/features.h \
/usr/include/libintl.h \
/usr/include/limits.h \
/usr/include/linux/close_range.h \
/usr/include/linux/errno.h \
/usr/include/linux/limits.h \
/usr/include/linux/posix_types.h \
/usr/include/linux/stddef.h \
/usr/include/linux/types.h \
/usr/include/locale.h \
/usr/include/math.h \
/usr/include/opencv4/opencv2/calib3d.hpp \
/usr/include/opencv4/opencv2/core.hpp \
/usr/include/opencv4/opencv2/core/affine.hpp \
/usr/include/opencv4/opencv2/core/async.hpp \
/usr/include/opencv4/opencv2/core/base.hpp \
/usr/include/opencv4/opencv2/core/bufferpool.hpp \
/usr/include/opencv4/opencv2/core/check.hpp \
/usr/include/opencv4/opencv2/core/cuda.hpp \
/usr/include/opencv4/opencv2/core/cuda.inl.hpp \
/usr/include/opencv4/opencv2/core/cuda_types.hpp \
/usr/include/opencv4/opencv2/core/cv_cpu_dispatch.h \
/usr/include/opencv4/opencv2/core/cvdef.h \
/usr/include/opencv4/opencv2/core/cvstd.hpp \
/usr/include/opencv4/opencv2/core/cvstd.inl.hpp \
/usr/include/opencv4/opencv2/core/cvstd_wrapper.hpp \
/usr/include/opencv4/opencv2/core/fast_math.hpp \
/usr/include/opencv4/opencv2/core/hal/interface.h \
/usr/include/opencv4/opencv2/core/mat.hpp \
/usr/include/opencv4/opencv2/core/mat.inl.hpp \
/usr/include/opencv4/opencv2/core/matx.hpp \
/usr/include/opencv4/opencv2/core/neon_utils.hpp \
/usr/include/opencv4/opencv2/core/operations.hpp \
/usr/include/opencv4/opencv2/core/optim.hpp \
/usr/include/opencv4/opencv2/core/ovx.hpp \
/usr/include/opencv4/opencv2/core/persistence.hpp \
/usr/include/opencv4/opencv2/core/saturate.hpp \
/usr/include/opencv4/opencv2/core/traits.hpp \
/usr/include/opencv4/opencv2/core/types.hpp \
/usr/include/opencv4/opencv2/core/utility.hpp \
/usr/include/opencv4/opencv2/core/version.hpp \
/usr/include/opencv4/opencv2/core/vsx_utils.hpp \
/usr/include/opencv4/opencv2/dnn.hpp \
/usr/include/opencv4/opencv2/dnn/dict.hpp \
/usr/include/opencv4/opencv2/dnn/dnn.hpp \
/usr/include/opencv4/opencv2/dnn/dnn.inl.hpp \
/usr/include/opencv4/opencv2/dnn/layer.hpp \
/usr/include/opencv4/opencv2/dnn/utils/inference_engine.hpp \
/usr/include/opencv4/opencv2/dnn/version.hpp \
/usr/include/opencv4/opencv2/features2d.hpp \
/usr/include/opencv4/opencv2/flann.hpp \
/usr/include/opencv4/opencv2/flann/all_indices.h \
/usr/include/opencv4/opencv2/flann/allocator.h \
/usr/include/opencv4/opencv2/flann/any.h \
/usr/include/opencv4/opencv2/flann/autotuned_index.h \
/usr/include/opencv4/opencv2/flann/composite_index.h \
/usr/include/opencv4/opencv2/flann/config.h \
/usr/include/opencv4/opencv2/flann/defines.h \
/usr/include/opencv4/opencv2/flann/dist.h \
/usr/include/opencv4/opencv2/flann/dynamic_bitset.h \
/usr/include/opencv4/opencv2/flann/flann_base.hpp \
/usr/include/opencv4/opencv2/flann/general.h \
/usr/include/opencv4/opencv2/flann/ground_truth.h \
/usr/include/opencv4/opencv2/flann/heap.h \
/usr/include/opencv4/opencv2/flann/hierarchical_clustering_index.h \
/usr/include/opencv4/opencv2/flann/index_testing.h \
/usr/include/opencv4/opencv2/flann/kdtree_index.h \
/usr/include/opencv4/opencv2/flann/kdtree_single_index.h \
/usr/include/opencv4/opencv2/flann/kmeans_index.h \
/usr/include/opencv4/opencv2/flann/linear_index.h \
/usr/include/opencv4/opencv2/flann/logger.h \
/usr/include/opencv4/opencv2/flann/lsh_index.h \
/usr/include/opencv4/opencv2/flann/lsh_table.h \
/usr/include/opencv4/opencv2/flann/matrix.h \
/usr/include/opencv4/opencv2/flann/miniflann.hpp \
/usr/include/opencv4/opencv2/flann/nn_index.h \
/usr/include/opencv4/opencv2/flann/params.h \
/usr/include/opencv4/opencv2/flann/random.h \
/usr/include/opencv4/opencv2/flann/result_set.h \
/usr/include/opencv4/opencv2/flann/sampling.h \
/usr/include/opencv4/opencv2/flann/saving.h \
/usr/include/opencv4/opencv2/flann/timer.h \
/usr/include/opencv4/opencv2/highgui.hpp \
/usr/include/opencv4/opencv2/imgcodecs.hpp \
/usr/include/opencv4/opencv2/imgproc.hpp \
/usr/include/opencv4/opencv2/imgproc/segmentation.hpp \
/usr/include/opencv4/opencv2/ml.hpp \
/usr/include/opencv4/opencv2/ml/ml.inl.hpp \
/usr/include/opencv4/opencv2/objdetect.hpp \
/usr/include/opencv4/opencv2/objdetect/detection_based_tracker.hpp \
/usr/include/opencv4/opencv2/objdetect/face.hpp \
/usr/include/opencv4/opencv2/opencv.hpp \
/usr/include/opencv4/opencv2/opencv_modules.hpp \
/usr/include/opencv4/opencv2/photo.hpp \
/usr/include/opencv4/opencv2/stitching.hpp \
/usr/include/opencv4/opencv2/stitching/detail/blenders.hpp \
/usr/include/opencv4/opencv2/stitching/detail/camera.hpp \
/usr/include/opencv4/opencv2/stitching/detail/exposure_compensate.hpp \
/usr/include/opencv4/opencv2/stitching/detail/matchers.hpp \
/usr/include/opencv4/opencv2/stitching/detail/motion_estimators.hpp \
/usr/include/opencv4/opencv2/stitching/detail/seam_finders.hpp \
/usr/include/opencv4/opencv2/stitching/detail/util.hpp \
/usr/include/opencv4/opencv2/stitching/detail/util_inl.hpp \
/usr/include/opencv4/opencv2/stitching/detail/warpers.hpp \
/usr/include/opencv4/opencv2/stitching/detail/warpers_inl.hpp \
/usr/include/opencv4/opencv2/stitching/warpers.hpp \
/usr/include/opencv4/opencv2/video.hpp \
/usr/include/opencv4/opencv2/video/background_segm.hpp \
/usr/include/opencv4/opencv2/video/tracking.hpp \
/usr/include/opencv4/opencv2/videoio.hpp \
/usr/include/pthread.h \
/usr/include/sched.h \
/usr/include/signal.h \
/usr/include/stdc-predef.h \
/usr/include/stdint.h \
/usr/include/stdio.h \
/usr/include/stdlib.h \
/usr/include/string.h \
/usr/include/strings.h \
/usr/include/time.h \
/usr/include/unistd.h \
/usr/include/wchar.h \
/usr/include/wctype.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/arm_bf16.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/arm_fp16.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/arm_neon.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/float.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/limits.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/stdarg.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/stddef.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/stdint.h \
/usr/lib/gcc/aarch64-linux-gnu/13/include/syslimits.h
/usr/include/aarch64-linux-gnu/bits/types/idtype_t.h:
/opt/bytetrack-counter-cpp/src/video_writer.cpp:
/opt/bytetrack-counter-cpp/src/rknn_yolo.cpp:
@@ -3594,6 +4074,8 @@ CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o: /opt/bytetrack-counter-cpp
/usr/include/opencv4/opencv2/flann/hierarchical_clustering_index.h:
/usr/include/aarch64-linux-gnu/sys/wait.h:
/usr/include/opencv4/opencv2/flann/ground_truth.h:
/usr/include/opencv4/opencv2/flann/general.h:
@@ -4514,6 +4996,8 @@ CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o: /opt/bytetrack-counter-cpp
/usr/include/c++/13/pstl/glue_algorithm_defs.h:
/opt/bytetrack-counter-cpp/src/video_writer.hpp:
/usr/include/c++/13/bits/std_thread.h:
/usr/include/eigen3/Eigen/src/Core/Visitor.h:
@@ -1 +1 @@
/usr/bin/c++ "CMakeFiles/bytetrack-counter.dir/src/main.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/kalman_filter.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/bytetrack.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/batch_store.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/csv_logger.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/config.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/drawing.cpp.o" -o bytetrack-counter /usr/lib/aarch64-linux-gnu/libopencv_highgui.so.4.6.0 /usr/lib/aarch64-linux-gnu/libsqlite3.so -lpthread /usr/lib/librknnrt.so /usr/lib/aarch64-linux-gnu/libopencv_videoio.so.4.6.0 /usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.4.6.0 /usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.4.6.0 /usr/lib/aarch64-linux-gnu/libopencv_core.so.4.6.0
/usr/bin/c++ "CMakeFiles/bytetrack-counter.dir/src/main.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/kalman_filter.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/bytetrack.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/batch_store.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/csv_logger.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/config.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/drawing.cpp.o" "CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o" -o bytetrack-counter /usr/lib/aarch64-linux-gnu/libopencv_highgui.so.4.6.0 /usr/lib/aarch64-linux-gnu/libsqlite3.so -lpthread /usr/lib/librknnrt.so /usr/lib/aarch64-linux-gnu/libopencv_videoio.so.4.6.0 /usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.4.6.0 /usr/lib/aarch64-linux-gnu/libopencv_imgproc.so.4.6.0 /usr/lib/aarch64-linux-gnu/libopencv_core.so.4.6.0
@@ -7,4 +7,5 @@ CMAKE_PROGRESS_6 = 6
CMAKE_PROGRESS_7 = 7
CMAKE_PROGRESS_8 = 8
CMAKE_PROGRESS_9 = 9
CMAKE_PROGRESS_10 = 10
+1 -1
View File
@@ -1 +1 @@
9
10
+27
View File
@@ -366,6 +366,30 @@ src/rknn_yolo.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/bytetrack-counter.dir/build.make CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.s
.PHONY : src/rknn_yolo.cpp.s
src/video_writer.o: src/video_writer.cpp.o
.PHONY : src/video_writer.o
# target to build an object file
src/video_writer.cpp.o:
$(MAKE) $(MAKESILENT) -f CMakeFiles/bytetrack-counter.dir/build.make CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.o
.PHONY : src/video_writer.cpp.o
src/video_writer.i: src/video_writer.cpp.i
.PHONY : src/video_writer.i
# target to preprocess a source file
src/video_writer.cpp.i:
$(MAKE) $(MAKESILENT) -f CMakeFiles/bytetrack-counter.dir/build.make CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.i
.PHONY : src/video_writer.cpp.i
src/video_writer.s: src/video_writer.cpp.s
.PHONY : src/video_writer.s
# target to generate assembly for a file
src/video_writer.cpp.s:
$(MAKE) $(MAKESILENT) -f CMakeFiles/bytetrack-counter.dir/build.make CMakeFiles/bytetrack-counter.dir/src/video_writer.cpp.s
.PHONY : src/video_writer.cpp.s
# Help Target
help:
@echo "The following are some of the valid targets for this Makefile:"
@@ -403,6 +427,9 @@ help:
@echo "... src/rknn_yolo.o"
@echo "... src/rknn_yolo.i"
@echo "... src/rknn_yolo.s"
@echo "... src/video_writer.o"
@echo "... src/video_writer.i"
@echo "... src/video_writer.s"
.PHONY : help
Binary file not shown.
+3 -3
View File
@@ -4,11 +4,11 @@
namespace version {
const std::string GIT_COMMIT = "1c783fd9";
const std::string GIT_COMMIT = "bb7d08ab";
const std::string GIT_BRANCH = "main";
const std::string GIT_TAG = "";
const std::string BUILD_DATE = "2026-07-07";
const std::string BUILD_TIME = "17:13:57";
const std::string BUILD_DATE = "2026-07-29";
const std::string BUILD_TIME = "00:00:24";
const int BUILD_YEAR = 2026;
const bool BUILD_RKNN = 1;
+6 -3
View File
@@ -131,12 +131,15 @@ FLUSH_EVERY_N_FRAMES=100
TRACKED_PRUNE_SEC=300
# --- Video recording ---
# Save annotated frames to segmented MP4 files (true/false)
# Per-batch video recording — raw frames (no overlay) to shared memory, moved to
# OUTPUT_DIR on batch close via non-blocking background process (true/false)
RECORD_VIDEO=false
# Duration in seconds of each video segment file
VIDEO_SEGMENT_SEC=3600
# Output video FPS (fallback if source FPS is unknown or ≤ 1)
OUTPUT_FPS=15
# Delay in seconds after batch starts before recording begins (every batch)
RECORD_DELAY_SECONDS=10
# Shared memory directory for recording (fast write, moved to OUTPUT_DIR on close)
RECORD_SHM_DIR=/dev/shm/bytetrack-counter
# --- Live stream snapshot ---
# Periodically write the latest annotated frame as JPEG for an external web server
View File
Whitespace-only changes.
+8 -1
View File
@@ -327,16 +327,18 @@ bool BatchStore::end_batch_locked(const std::string& closed_by) {
auto duration_sec = std::chrono::duration_cast<std::chrono::seconds>(end_tp - start_tp).count();
int count = state["count"].get<int>();
int batch_number = state["batch_number"].get<int>();
if (count < min_object_per_batch_ || duration_sec < min_duration_per_batch_) {
current_state_ = nullptr;
save_state();
batch_timer_running_ = false;
if (batch_closed_cb_) batch_closed_cb_(batch_number);
return false;
}
try {
insert_batch(state["counting_date"], state["batch_number"],
insert_batch(state["counting_date"], batch_number,
count, state["start_time"], end_time);
} catch (const std::exception& e) {
logger_("Failed to persist batch: " + std::string(e.what()));
@@ -346,6 +348,7 @@ bool BatchStore::end_batch_locked(const std::string& closed_by) {
current_state_ = nullptr;
save_state();
batch_timer_running_ = false;
if (batch_closed_cb_) batch_closed_cb_(batch_number);
return true;
}
@@ -406,6 +409,10 @@ int BatchStore::display_total() {
return get_closed_total_for_day(get_counting_date()) + current_batch_count();
}
void BatchStore::set_batch_closed_callback(std::function<void(int)> cb) {
batch_closed_cb_ = std::move(cb);
}
bool BatchStore::check_cutoff_reset() {
return cutoff_triggered_.exchange(false);
}
+3
View File
@@ -31,6 +31,8 @@ public:
int current_batch_count() const;
int display_total();
void set_batch_closed_callback(std::function<void(int)> cb);
bool check_cutoff_reset();
std::pair<int, bool> record_ayam_crossing(int track_id);
@@ -67,6 +69,7 @@ private:
int min_duration_per_batch_;
int carry_ids_ = 50;
std::function<void(const std::string&)> logger_;
std::function<void(int)> batch_closed_cb_;
sqlite3* db_ = nullptr;
std::mutex state_mutex_;
+3
View File
@@ -140,6 +140,9 @@ void AppConfig::load_from_env(const char* env_path) {
if (!vs_s.empty()) video_segment_sec = std::stoi(vs_s);
auto ofps_s = get_env("OUTPUT_FPS");
if (!ofps_s.empty()) output_fps = std::stoi(ofps_s);
auto rds_s = get_env("RECORD_DELAY_SECONDS");
if (!rds_s.empty()) record_delay_seconds = std::stof(rds_s);
record_shm_dir = get_env("RECORD_SHM_DIR", record_shm_dir);
auto lse_s = get_env("LIVE_STREAM_ENABLED");
live_stream_enabled = (lse_s == "true");
+2
View File
@@ -61,6 +61,8 @@ struct AppConfig {
bool record_video = false;
int video_segment_sec = 3600;
int output_fps = 15;
float record_delay_seconds = 10.0f;
std::string record_shm_dir = "/dev/shm/bytetrack-counter";
bool live_stream_enabled = false;
std::string live_stream_frame_path = "/dev/shm/bytetrack-counter/live_frame.jpg";
+18 -1
View File
@@ -6,6 +6,7 @@
#include "drawing.hpp"
#include "nms.hpp"
#include "version.hpp"
#include "video_writer.hpp"
#include <opencv2/opencv.hpp>
#include <Eigen/Dense>
@@ -219,6 +220,16 @@ int main(int argc, char* argv[]) {
<< fps_prop << "fps | line x=" << line_x
<< " | cross=" << g_config.cross_direction << std::endl;
std::unique_ptr<VideoBatchWriter> video_writer;
if (g_config.record_video) {
video_writer = std::make_unique<VideoBatchWriter>(
g_config.record_shm_dir, g_config.output_dir,
w, h, static_cast<int>(fps_prop),
g_config.record_delay_seconds);
auto* vw = video_writer.get();
store.set_batch_closed_callback([vw](int bn) { vw->on_batch_closed(bn); });
}
int reconnect_count = 0;
std::unordered_map<int, TrackedInfo> ayam_tracked;
@@ -429,7 +440,10 @@ int main(int argc, char* argv[]) {
});
}
ayam_crossed_frame = true;
if (started_new) batch_started_frame = true;
if (started_new) {
batch_started_frame = true;
if (video_writer) video_writer->on_new_batch(store.current_batch_number());
}
crossing_times.push_back(mono);
ayam_cross_flash[tid] = g_config.cross_flash_frames;
popups.push_back({
@@ -448,6 +462,8 @@ int main(int argc, char* argv[]) {
ayam_tracked[tid] = {cx, mono};
}
if (video_writer) video_writer->feed_frame(frame);
// Draw talenan
for (int di = 0; di < nt; ++di) {
auto it = talenan_tr.det_to_track.find(di);
@@ -540,6 +556,7 @@ int main(int argc, char* argv[]) {
}
cap.release();
if (video_writer) video_writer->shutdown();
store.shutdown();
std::cout << "\n=== Batch Summary (SQLite) ===" << std::endl;
+147
View File
@@ -0,0 +1,147 @@
#include "video_writer.hpp"
#include <iostream>
#include <fstream>
#include <sstream>
#include <iomanip>
#include <ctime>
#include <filesystem>
#include <sys/wait.h>
#include <unistd.h>
VideoBatchWriter::VideoBatchWriter(const std::string& shm_dir,
const std::string& output_dir,
int w, int h, int fps,
float delay_sec)
: shm_dir_(shm_dir), output_dir_(output_dir),
w_(w), h_(h), fps_(fps), delay_sec_(delay_sec)
{
ensure_dir(shm_dir_);
ensure_dir(output_dir_);
for (const auto& entry : std::filesystem::directory_iterator(shm_dir_)) {
if (entry.path().extension() == ".mp4") {
std::filesystem::remove(entry.path());
}
}
}
VideoBatchWriter::~VideoBatchWriter() {
shutdown();
}
void VideoBatchWriter::ensure_dir(const std::string& dir) {
std::filesystem::create_directories(dir);
}
void VideoBatchWriter::on_new_batch(int batch_number) {
current_batch_ = batch_number;
delaying_ = true;
delay_start_ = std::chrono::steady_clock::now();
}
void VideoBatchWriter::on_batch_closed(int batch_number) {
if (recording_ && current_batch_ == batch_number) {
stop_and_move(batch_number);
}
delaying_ = false;
recording_ = false;
current_batch_ = 0;
}
void VideoBatchWriter::feed_frame(const cv::Mat& raw) {
if (delaying_) {
auto elapsed = std::chrono::duration<float>(
std::chrono::steady_clock::now() - delay_start_).count();
if (elapsed >= delay_sec_) {
delaying_ = false;
start_recording(current_batch_);
}
}
if (recording_ && writer_.isOpened()) {
writer_.write(raw);
}
}
void VideoBatchWriter::start_recording(int batch_number) {
if (writer_.isOpened()) writer_.release();
auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::ostringstream name;
name << "batch_" << batch_number << "_"
<< std::put_time(std::localtime(&t), "%Y%m%d_%H%M%S") << ".mp4";
current_path_ = shm_dir_ + "/" + name.str();
writer_.open(current_path_,
cv::VideoWriter::fourcc('a','v','c','1'),
fps_, cv::Size(w_, h_));
recording_ = writer_.isOpened();
if (recording_) {
std::cout << "[RECORD] Started: " << current_path_ << std::endl;
} else {
std::cerr << "[RECORD] Failed to open: " << current_path_ << std::endl;
}
}
static void copy_and_clean(const std::string& src, const std::string& dst) {
if (src.empty() || dst.empty()) return;
{
std::ifstream ifs(src, std::ios::binary);
if (ifs) {
std::ofstream ofs(dst, std::ios::binary);
ofs << ifs.rdbuf();
ofs.flush();
}
}
std::error_code ec;
std::filesystem::remove(src, ec);
}
void VideoBatchWriter::stop_and_move(int batch_number) {
if (writer_.isOpened()) {
writer_.release();
std::cout << "[RECORD] Stopped: " << current_path_ << std::endl;
}
std::string src = current_path_;
current_path_.clear();
auto t = std::chrono::system_clock::to_time_t(std::chrono::system_clock::now());
std::ostringstream name;
name << "batch_" << batch_number << "_"
<< std::put_time(std::localtime(&t), "%Y%m%d_%H%M%S") << ".mp4";
std::string dst = output_dir_ + "/" + name.str();
pid_t pid = fork();
if (pid == 0) {
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
copy_and_clean(src, dst);
_exit(0);
}
}
void VideoBatchWriter::shutdown() {
if (writer_.isOpened()) {
writer_.release();
}
recording_ = false;
delaying_ = false;
if (!current_path_.empty()) {
std::string src = current_path_;
std::string dst = output_dir_ + "/" +
std::filesystem::path(current_path_).filename().string();
current_path_.clear();
pid_t pid = fork();
if (pid == 0) {
close(STDIN_FILENO);
close(STDOUT_FILENO);
close(STDERR_FILENO);
copy_and_clean(src, dst);
_exit(0);
}
}
}
+36
View File
@@ -0,0 +1,36 @@
#pragma once
#include <opencv2/opencv.hpp>
#include <string>
#include <chrono>
class VideoBatchWriter {
public:
VideoBatchWriter(const std::string& shm_dir,
const std::string& output_dir,
int w, int h, int fps,
float delay_sec);
~VideoBatchWriter();
void on_new_batch(int batch_number);
void on_batch_closed(int batch_number);
void feed_frame(const cv::Mat& raw);
void shutdown();
private:
void start_recording(int batch_number);
void stop_and_move(int batch_number);
void ensure_dir(const std::string& dir);
std::string shm_dir_;
std::string output_dir_;
int w_, h_, fps_;
float delay_sec_;
bool delaying_ = false;
bool recording_ = false;
std::chrono::steady_clock::time_point delay_start_;
cv::VideoWriter writer_;
std::string current_path_;
int current_batch_ = 0;
};