Skip to content

Commit d36ecca

Browse files
authored
Merge pull request #45 from AIRLegend/dev
Fixes
2 parents ac39185 + 3f47531 commit d36ecca

File tree

14 files changed

+108
-37
lines changed

14 files changed

+108
-37
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,3 +348,4 @@ healthchecksdb
348348
*/Dependencies/*
349349
Client/models
350350
prefs.ini
351+
log.txt

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "Client/Vendor/spdlog"]
2+
path = Client/Vendor/spdlog
3+
url = https://github.com/gabime/spdlog

Client/Client.vcxproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@
7272
</PropertyGroup>
7373
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
7474
<ClCompile>
75-
<AdditionalIncludeDirectories>$(Qt_INCLUDEPATH_);$(SolutionDir)Dependencies\libusb\include\libusb-1.0;$(SolutionDir)Dependencies\OpenCV\include\;$(SolutionDir)Dependencies\onnxruntime\include\;$(SolutionDir)AITracker\src\;$(ProjectDir)Include;$(QTDIR)\include;$(QTDIR)\include\QtUiTools;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtQuick;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtQml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;$(Platform)\$(Configuration)\uic;$(Platform)\$(Configuration)\moc;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
75+
<AdditionalIncludeDirectories>$(Qt_INCLUDEPATH_);$(SolutionDir)Dependencies\libusb\include\libusb-1.0;$(SolutionDir)Dependencies\OpenCV\include\;$(ProjectDir)\Vendor\spdlog\include\;$(SolutionDir)Dependencies\onnxruntime\include\;$(SolutionDir)AITracker\src\;$(ProjectDir)Include;$(QTDIR)\include;$(QTDIR)\include\QtUiTools;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtQuick;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtQml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;$(Platform)\$(Configuration)\uic;$(Platform)\$(Configuration)\moc;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
7676
</ClCompile>
7777
<Link>
78-
<AdditionalLibraryDirectories>$(Qt_LIBPATH_);$(SolutionDir)Dependencies\libusb\MS64\static;$(SolutionDir)Dependencies\OpenCV\lib;$(SolutionDir)Dependencies\onnxruntime\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
78+
<AdditionalLibraryDirectories>$(Qt_LIBPATH_);$(SolutionDir)Dependencies\libusb\MS64\static;$(SolutionDir)Dependencies\OpenCV\lib;$(SolutionDir)Dependencies\spdlog\lib\;$(SolutionDir)Dependencies\onnxruntime\lib\;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
7979
<AdditionalDependencies>$(Qt_LIBS_);opencv_world430.lib;onnxruntime.lib;Ws2_32.lib;libusb-1.0.lib;legacy_stdio_definitions.lib;%(AdditionalDependencies)</AdditionalDependencies>
8080
<OptimizeReferences>true</OptimizeReferences>
8181
<EnableCOMDATFolding>true</EnableCOMDATFolding>
@@ -105,7 +105,7 @@
105105
<AdditionalDependencies>$(Qt_LIBS_);opencv_world430d.lib;onnxruntime.lib;Ws2_32.lib;legacy_stdio_definitions.lib;libusb-1.0.lib;%(AdditionalDependencies)</AdditionalDependencies>
106106
</Link>
107107
<ClCompile>
108-
<AdditionalIncludeDirectories>$(Qt_INCLUDEPATH_);$(SolutionDir)Dependencies\libusb\include\libusb-1.0;$(SolutionDir)Dependencies\OpenCV\include\;$(SolutionDir)Dependencies\onnxruntime\include\;$(SolutionDir)PS3Driver\include\;$(SolutionDir)AITracker\src\;$(ProjectDir)Include;$(QTDIR)\include;$(QTDIR)\include\QtUiTools;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtQuick;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtQml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;$(Platform)\$(Configuration)\uic;$(Platform)\$(Configuration)\moc;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
108+
<AdditionalIncludeDirectories>$(Qt_INCLUDEPATH_);$(SolutionDir)Dependencies\libusb\include\libusb-1.0;$(SolutionDir)Dependencies\OpenCV\include\;$(SolutionDir)Dependencies\onnxruntime\include\;$(ProjectDir)Vendor\spdlog\include\;$(SolutionDir)PS3Driver\include\;$(SolutionDir)AITracker\src\;$(ProjectDir)Include;$(QTDIR)\include;$(QTDIR)\include\QtUiTools;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtQuick;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtANGLE;$(QTDIR)\include\QtQml;$(QTDIR)\include\QtNetwork;$(QTDIR)\include\QtCore;$(QTDIR)\mkspecs\win32-msvc;$(Platform)\$(Configuration)\uic;$(Platform)\$(Configuration)\moc;.\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
109109
</ClCompile>
110110
<ProjectReference>
111111
<UseLibraryDependencyInputs>true</UseLibraryDependencyInputs>

Client/Vendor/spdlog

Submodule spdlog added at 9cd25dd

Client/src/Main.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
#include <omp.h>
1111
#include "tracker/TrackerFactory.h"
1212

13+
#include "spdlog/spdlog.h"
14+
#include "spdlog/sinks/basic_file_sink.h"
1315

1416

1517
int main(int argc, char *argv[])
@@ -23,15 +25,36 @@ int main(int argc, char *argv[])
2325
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
2426
#endif
2527

28+
29+
30+
std::shared_ptr<spdlog::logger> logger;
31+
try
32+
{
33+
logger = spdlog::basic_logger_mt("aitrack", "log.txt", true);
34+
logger->flush_on(spdlog::level::info);
35+
}
36+
catch (const spdlog::spdlog_ex& ex)
37+
{
38+
std::cout << "Log init failed: " << ex.what() << std::endl;
39+
}
40+
41+
42+
logger->info(" ---------- AITRACK LOG ----------");
43+
44+
2645
QApplication app(argc, argv);
2746

2847
WindowMain w;
2948
w.show();
3049

50+
3151
auto conf_mgr = std::make_unique<ConfigMgr>("./prefs.ini");
52+
logger->info("Created/Found prefs.ini");
53+
3254
auto t_factory = std::make_unique<TrackerFactory>("./models/");
3355

3456
Presenter p((IView&)w, std::move(t_factory), std::move(conf_mgr));
57+
logger->info("App initialized");
3558

3659
return app.exec();
3760
}

Client/src/camera/CameraFactory.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ std::vector<std::shared_ptr<Camera>> CameraFactory::getCameras(CameraSettings& s
5555
{
5656
try
5757
{
58-
std::shared_ptr<Camera> c = std::make_shared<OCVCamera>(640, 480, 30, i);
58+
std::shared_ptr<Camera> c = std::make_shared<OCVCamera>(settings.width, settings.height, settings.fps, i);
59+
c->set_settings(settings); // Brightness / Exposure
5960
cams.push_back(std::move(c));
6061
std::cout << "Found ID: " << i << std::endl;
6162
}

Client/src/camera/CameraSettings.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ CameraSettings::CameraSettings(CameraSettings& settings)
1616
gain = settings.gain;
1717
fps = settings.fps;
1818
width = settings.width;
19-
height = settings.width;
19+
height = settings.height;
2020
}
2121

2222
CameraSettings::~CameraSettings()

Client/src/camera/OCVCamera.cpp

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,21 @@ OCVCamera::OCVCamera(int width, int height, int fps, int index) :
1717
}
1818
is_valid = true;
1919

20-
w_scale = (float)width/(float)cam_native_width;
20+
21+
if (width < 0 || height < 0)
22+
{
23+
this->width = cam_native_width;
24+
this->height = cam_native_height;
25+
}
26+
27+
if (fps < 0)
28+
this->fps = cam_native_fps;
29+
30+
31+
cap.set(cv::CAP_PROP_FRAME_WIDTH, this->width);
32+
cap.set(cv::CAP_PROP_FRAME_HEIGHT, this->height);
33+
cap.set(cv::CAP_PROP_FPS, this->fps);
34+
2135
exposure, gain = -1;
2236
}
2337

@@ -39,7 +53,9 @@ bool OCVCamera::is_camera_available()
3953
if (frame.empty())
4054
return false;
4155

42-
cam_native_width = cap.get(cv::CAP_PROP_FRAME_WIDTH);
56+
cam_native_width = (int)cap.get(cv::CAP_PROP_FRAME_WIDTH);
57+
cam_native_height = (int)cap.get(cv::CAP_PROP_FRAME_HEIGHT);
58+
cam_native_fps = (int)cap.get(cv::CAP_PROP_FPS);
4359
cap.release();
4460
}
4561
return available;
@@ -63,9 +79,6 @@ void OCVCamera::get_frame(uint8_t* buffer)
6379
{
6480
cv::Mat frame;
6581
cap.read(frame);
66-
//Scale maintaining aspect ratio. If distorted, the model will get confused.
67-
//TODO: Maybe cropping (width,height) section from the center is better.
68-
cv::resize(frame, frame, size, w_scale, w_scale);
6982
cv::flip(frame, frame, 1);
7083
for (int i = 0; i < frame.cols * frame.rows * 3; i++)
7184
buffer[i] = frame.data[i];
@@ -74,16 +87,15 @@ void OCVCamera::get_frame(uint8_t* buffer)
7487

7588
void OCVCamera::set_settings(CameraSettings& settings)
7689
{
77-
this->width = settings.width;
78-
this->fps = settings.fps;
79-
this->height = settings.height;
80-
w_scale = (float)width / (float)cam_native_width;
81-
82-
// Opencv needs [0,1] ranges
83-
exposure = settings.exposure < 0 ? -1.0F : (float)settings.exposure/255;
84-
gain = settings.gain < 0 ? -1.0F : (float)settings.gain / 64;
85-
cap.set(cv::CAP_PROP_EXPOSURE, exposure);
86-
cap.set(cv::CAP_PROP_GAIN, gain);
90+
this->width = settings.width > 0 ? settings.width : this->cam_native_width;
91+
this->height = settings.height > 0 ? settings.height : this->cam_native_height;
92+
this->fps = settings.fps > 0 ? settings.fps : this->cam_native_fps;
93+
94+
// Disabled for the moment because of the different ranges in generic cameras.
95+
//exposure = settings.exposure < 0 ? -1.0F : (float)settings.exposure/255;
96+
//gain = settings.gain < 0 ? -1.0F : (float)settings.gain / 64;
97+
//cap.set(cv::CAP_PROP_EXPOSURE, exposure);
98+
//cap.set(cv::CAP_PROP_GAIN, gain);
8799
}
88100

89101
CameraSettings OCVCamera::get_settings()

Client/src/camera/OCVCamera.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class OCVCamera : public Camera
99
cv::Size size;
1010
float w_scale;
1111
float exposure, gain;
12-
int cam_native_width;
12+
int cam_native_height, cam_native_width, cam_native_fps;
1313
int cam_index;
1414
int CV_BACKEND;
1515

Client/src/model/Config.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ ConfigData ConfigData::getGenericConfig()
1616
conf.selected_model = 0;
1717
conf.selected_camera = 0;
1818
conf.num_cameras_detected = 0;
19-
conf.video_width = 640;
20-
conf.video_height = 480;
21-
conf.video_fps = 30;
19+
conf.video_width = -1;
20+
conf.video_height = -1;
21+
conf.video_fps = -1;
2222
conf.use_landmark_stab = true;
2323
conf.x, conf.y, conf.z, conf.pitch, conf.yaw, conf.roll = 0;
2424
conf.cam_exposure = -1;

0 commit comments

Comments
 (0)