First argument as config.env is mandatory
This commit is contained in:
1 parent
d66af69c42
commit
ccb1c89b12
11 files changed
+118
-3
No files matched your search
@@ -15,8 +15,54 @@ option(HAS_RKNN "Build with RKNN NPU support" ON)
|
|||||||
if(HAS_RKNN)
|
if(HAS_RKNN)
|
||||||
add_definitions(-DHAS_RKNN)
|
add_definitions(-DHAS_RKNN)
|
||||||
include_directories(/usr/local/include/rknn)
|
include_directories(/usr/local/include/rknn)
|
||||||
|
set(HAS_RKNN_VAL 1)
|
||||||
|
else()
|
||||||
|
set(HAS_RKNN_VAL 0)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND git rev-parse --short=8 HEAD
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_COMMIT
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET
|
||||||
|
)
|
||||||
|
if(NOT GIT_COMMIT)
|
||||||
|
set(GIT_COMMIT "unknown")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND git rev-parse --abbrev-ref HEAD
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_BRANCH
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET
|
||||||
|
)
|
||||||
|
if(NOT GIT_BRANCH)
|
||||||
|
set(GIT_BRANCH "unknown")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
execute_process(
|
||||||
|
COMMAND git describe --tags --exact-match 2>/dev/null || echo ""
|
||||||
|
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||||
|
OUTPUT_VARIABLE GIT_TAG
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||||
|
ERROR_QUIET
|
||||||
|
)
|
||||||
|
if(NOT GIT_TAG)
|
||||||
|
set(GIT_TAG "")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
string(TIMESTAMP BUILD_DATE "%Y-%m-%d")
|
||||||
|
string(TIMESTAMP BUILD_TIME "%H:%M:%S")
|
||||||
|
string(TIMESTAMP BUILD_YEAR "%Y")
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_SOURCE_DIR}/src/version.hpp.in
|
||||||
|
${CMAKE_BINARY_DIR}/version.hpp
|
||||||
|
@ONLY
|
||||||
|
)
|
||||||
|
|
||||||
set(SOURCES
|
set(SOURCES
|
||||||
src/main.cpp
|
src/main.cpp
|
||||||
src/kalman_filter.cpp
|
src/kalman_filter.cpp
|
||||||
@@ -35,6 +81,7 @@ target_include_directories(bytetrack-counter PRIVATE
|
|||||||
${EIGEN3_INCLUDE_DIR}
|
${EIGEN3_INCLUDE_DIR}
|
||||||
${SQLite3_INCLUDE_DIRS}
|
${SQLite3_INCLUDE_DIRS}
|
||||||
src
|
src
|
||||||
|
${CMAKE_BINARY_DIR}
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_libraries(bytetrack-counter
|
target_link_libraries(bytetrack-counter
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ set(CMAKE_MAKEFILE_DEPENDS
|
|||||||
"/opt/bytetrack-counter-cpp/CMakeLists.txt"
|
"/opt/bytetrack-counter-cpp/CMakeLists.txt"
|
||||||
"CMakeFiles/3.28.3/CMakeCXXCompiler.cmake"
|
"CMakeFiles/3.28.3/CMakeCXXCompiler.cmake"
|
||||||
"CMakeFiles/3.28.3/CMakeSystem.cmake"
|
"CMakeFiles/3.28.3/CMakeSystem.cmake"
|
||||||
|
"/opt/bytetrack-counter-cpp/src/version.hpp.in"
|
||||||
"/usr/lib/aarch64-linux-gnu/cmake/opencv4/OpenCVConfig-version.cmake"
|
"/usr/lib/aarch64-linux-gnu/cmake/opencv4/OpenCVConfig-version.cmake"
|
||||||
"/usr/lib/aarch64-linux-gnu/cmake/opencv4/OpenCVConfig.cmake"
|
"/usr/lib/aarch64-linux-gnu/cmake/opencv4/OpenCVConfig.cmake"
|
||||||
"/usr/lib/aarch64-linux-gnu/cmake/opencv4/OpenCVModules-release.cmake"
|
"/usr/lib/aarch64-linux-gnu/cmake/opencv4/OpenCVModules-release.cmake"
|
||||||
@@ -45,6 +46,7 @@ set(CMAKE_MAKEFILE_OUTPUTS
|
|||||||
|
|
||||||
# Byproducts of CMake generate step:
|
# Byproducts of CMake generate step:
|
||||||
set(CMAKE_MAKEFILE_PRODUCTS
|
set(CMAKE_MAKEFILE_PRODUCTS
|
||||||
|
"version.hpp"
|
||||||
"CMakeFiles/CMakeDirectoryInformation.cmake"
|
"CMakeFiles/CMakeDirectoryInformation.cmake"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@@ -2148,6 +2148,7 @@ CMakeFiles/bytetrack-counter.dir/src/kalman_filter.cpp.o
|
|||||||
|
|
||||||
CMakeFiles/bytetrack-counter.dir/src/main.cpp.o
|
CMakeFiles/bytetrack-counter.dir/src/main.cpp.o
|
||||||
/opt/bytetrack-counter-cpp/src/main.cpp
|
/opt/bytetrack-counter-cpp/src/main.cpp
|
||||||
|
/opt/bytetrack-counter-cpp/build/version.hpp
|
||||||
/opt/bytetrack-counter-cpp/src/batch_store.hpp
|
/opt/bytetrack-counter-cpp/src/batch_store.hpp
|
||||||
/opt/bytetrack-counter-cpp/src/bytetrack.hpp
|
/opt/bytetrack-counter-cpp/src/bytetrack.hpp
|
||||||
/opt/bytetrack-counter-cpp/src/config.hpp
|
/opt/bytetrack-counter-cpp/src/config.hpp
|
||||||
|
|||||||
@@ -2141,6 +2141,7 @@ CMakeFiles/bytetrack-counter.dir/src/kalman_filter.cpp.o: /opt/bytetrack-counter
|
|||||||
/usr/lib/gcc/aarch64-linux-gnu/13/include/syslimits.h
|
/usr/lib/gcc/aarch64-linux-gnu/13/include/syslimits.h
|
||||||
|
|
||||||
CMakeFiles/bytetrack-counter.dir/src/main.cpp.o: /opt/bytetrack-counter-cpp/src/main.cpp \
|
CMakeFiles/bytetrack-counter.dir/src/main.cpp.o: /opt/bytetrack-counter-cpp/src/main.cpp \
|
||||||
|
version.hpp \
|
||||||
/opt/bytetrack-counter-cpp/src/batch_store.hpp \
|
/opt/bytetrack-counter-cpp/src/batch_store.hpp \
|
||||||
/opt/bytetrack-counter-cpp/src/bytetrack.hpp \
|
/opt/bytetrack-counter-cpp/src/bytetrack.hpp \
|
||||||
/opt/bytetrack-counter-cpp/src/config.hpp \
|
/opt/bytetrack-counter-cpp/src/config.hpp \
|
||||||
@@ -4819,6 +4820,8 @@ CMakeFiles/bytetrack-counter.dir/src/rknn_yolo.cpp.o: /opt/bytetrack-counter-cpp
|
|||||||
|
|
||||||
/usr/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h:
|
/usr/include/eigen3/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h:
|
||||||
|
|
||||||
|
version.hpp:
|
||||||
|
|
||||||
/usr/include/eigen3/Eigen/src/Core/CommaInitializer.h:
|
/usr/include/eigen3/Eigen/src/Core/CommaInitializer.h:
|
||||||
|
|
||||||
/usr/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h:
|
/usr/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h:
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# compile CXX with /usr/bin/c++
|
# compile CXX with /usr/bin/c++
|
||||||
CXX_DEFINES = -DHAS_RKNN
|
CXX_DEFINES = -DHAS_RKNN
|
||||||
|
|
||||||
CXX_INCLUDES = -I/usr/local/include/rknn -I/usr/include/eigen3 -I/opt/bytetrack-counter-cpp/src -isystem /usr/include/opencv4
|
CXX_INCLUDES = -I/usr/local/include/rknn -I/usr/include/eigen3 -I/opt/bytetrack-counter-cpp/src -I/opt/bytetrack-counter-cpp/build -isystem /usr/include/opencv4
|
||||||
|
|
||||||
CXX_FLAGS = -std=c++17
|
CXX_FLAGS = -std=c++17
|
||||||
|
|
||||||
Binary file not shown.
@@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace version {
|
||||||
|
|
||||||
|
const std::string GIT_COMMIT = "d66af69c";
|
||||||
|
const std::string GIT_BRANCH = "main";
|
||||||
|
const std::string GIT_TAG = "";
|
||||||
|
const std::string BUILD_DATE = "2026-07-06";
|
||||||
|
const std::string BUILD_TIME = "10:23:30";
|
||||||
|
const int BUILD_YEAR = 2026;
|
||||||
|
const bool BUILD_RKNN = 1;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -406,6 +406,14 @@ void BatchStore::start_cutoff_watcher() {
|
|||||||
t.detach();
|
t.detach();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void BatchStore::ping_activity() {
|
||||||
|
std::lock_guard<std::mutex> lock(state_mutex_);
|
||||||
|
if (!current_state_.is_null()) {
|
||||||
|
current_state_["last_detection_time"] = now_iso();
|
||||||
|
reset_batch_timer();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void BatchStore::shutdown() {
|
void BatchStore::shutdown() {
|
||||||
shutdown_flag_ = true;
|
shutdown_flag_ = true;
|
||||||
batch_timer_running_ = false;
|
batch_timer_running_ = false;
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ public:
|
|||||||
std::pair<int, bool> record_ayam_crossing(int track_id);
|
std::pair<int, bool> record_ayam_crossing(int track_id);
|
||||||
bool record_talenan_crossing(int track_id);
|
bool record_talenan_crossing(int track_id);
|
||||||
void end_batch(const std::string& closed_by = "manual");
|
void end_batch(const std::string& closed_by = "manual");
|
||||||
|
void ping_activity();
|
||||||
void shutdown();
|
void shutdown();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
+25
-2
@@ -5,6 +5,7 @@
|
|||||||
#include "rknn_yolo.hpp"
|
#include "rknn_yolo.hpp"
|
||||||
#include "drawing.hpp"
|
#include "drawing.hpp"
|
||||||
#include "nms.hpp"
|
#include "nms.hpp"
|
||||||
|
#include "version.hpp"
|
||||||
|
|
||||||
#include <opencv2/opencv.hpp>
|
#include <opencv2/opencv.hpp>
|
||||||
#include <Eigen/Dense>
|
#include <Eigen/Dense>
|
||||||
@@ -98,10 +99,30 @@ int main(int argc, char* argv[]) {
|
|||||||
signal(SIGINT, signal_handler);
|
signal(SIGINT, signal_handler);
|
||||||
signal(SIGTERM, signal_handler);
|
signal(SIGTERM, signal_handler);
|
||||||
|
|
||||||
const char* env_path = argc > 1 ? argv[1] : nullptr;
|
if (argc < 2) {
|
||||||
g_config.load_from_env(env_path);
|
std::cout << "ByteTrack Counter (C++)" << std::endl;
|
||||||
|
std::cout << "Version: " << version::GIT_COMMIT
|
||||||
|
<< " | branch: " << version::GIT_BRANCH
|
||||||
|
<< " | built: " << version::BUILD_DATE << " " << version::BUILD_TIME
|
||||||
|
<< " | rknn: " << (version::BUILD_RKNN ? "ON" : "OFF");
|
||||||
|
if (!version::GIT_TAG.empty())
|
||||||
|
std::cout << " | tag: " << version::GIT_TAG;
|
||||||
|
std::cout << std::endl;
|
||||||
|
std::cout << "Usage: bytetrack-counter <config.env>" << std::endl;
|
||||||
|
std::cout << " config.env path to environment configuration file (required)" << std::endl;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_config.load_from_env(argv[1]);
|
||||||
|
|
||||||
std::cout << "Starting ByteTrack Counter (C++)" << std::endl;
|
std::cout << "Starting ByteTrack Counter (C++)" << std::endl;
|
||||||
|
std::cout << "Version: " << version::GIT_COMMIT
|
||||||
|
<< " | branch: " << version::GIT_BRANCH
|
||||||
|
<< " | built: " << version::BUILD_DATE << " " << version::BUILD_TIME
|
||||||
|
<< " | rknn: " << (version::BUILD_RKNN ? "ON" : "OFF");
|
||||||
|
if (!version::GIT_TAG.empty())
|
||||||
|
std::cout << " | tag: " << version::GIT_TAG;
|
||||||
|
std::cout << std::endl;
|
||||||
std::cout << "Camera: " << g_config.camera_name << std::endl;
|
std::cout << "Camera: " << g_config.camera_name << std::endl;
|
||||||
std::cout << "Source: " << g_config.source << std::endl;
|
std::cout << "Source: " << g_config.source << std::endl;
|
||||||
std::cout << "Model: " << g_config.model_path << " | imgsz=" << g_config.imgsz
|
std::cout << "Model: " << g_config.model_path << " | imgsz=" << g_config.imgsz
|
||||||
@@ -244,6 +265,8 @@ int main(int argc, char* argv[]) {
|
|||||||
int na = static_cast<int>(ayam_boxes.size());
|
int na = static_cast<int>(ayam_boxes.size());
|
||||||
int nt = static_cast<int>(talenan_boxes.size());
|
int nt = static_cast<int>(talenan_boxes.size());
|
||||||
|
|
||||||
|
if (na > 0) store.ping_activity();
|
||||||
|
|
||||||
Eigen::MatrixXf ayam_mat(na, 4), talenan_mat(nt, 4);
|
Eigen::MatrixXf ayam_mat(na, 4), talenan_mat(nt, 4);
|
||||||
Eigen::VectorXf ayam_scores_vec(na), talenan_scores_vec(nt);
|
Eigen::VectorXf ayam_scores_vec(na), talenan_scores_vec(nt);
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
namespace version {
|
||||||
|
|
||||||
|
const std::string GIT_COMMIT = "@GIT_COMMIT@";
|
||||||
|
const std::string GIT_BRANCH = "@GIT_BRANCH@";
|
||||||
|
const std::string GIT_TAG = "@GIT_TAG@";
|
||||||
|
const std::string BUILD_DATE = "@BUILD_DATE@";
|
||||||
|
const std::string BUILD_TIME = "@BUILD_TIME@";
|
||||||
|
const int BUILD_YEAR = @BUILD_YEAR@;
|
||||||
|
const bool BUILD_RKNN = @HAS_RKNN_VAL@;
|
||||||
|
|
||||||
|
}
|
||||||
Reference in new issue
Block a user