From 63d58a399fd971b7b9d12bd6904d7c033e81e3bf Mon Sep 17 00:00:00 2001 From: "yorick.geoffre" Date: Sun, 12 Mar 2023 22:41:50 +0100 Subject: [PATCH] working --- .vscode/settings.json | 3 +- .../CMakeFiles/thermix.dir/Factory.cpp.o | Bin 72296 -> 87112 bytes .../CMakeFiles/thermix.dir/Factory.cpp.o.d | 7 +- .../thermix.dir/ThermxController.cpp.o | Bin 61216 -> 103728 bytes .../thermix.dir/ThermxController.cpp.o.d | 7 +- .../thermix.dir/ThermxRenderer.cpp.o | Bin 35768 -> 101344 bytes .../thermix.dir/compiler_depend.internal | 12 +-- .../thermix.dir/compiler_depend.make | 64 +++++++-------- Plugins/Thermx/CMakeLists.txt | 6 +- Plugins/Thermx/ThermxController.cpp | 30 ++++++- Plugins/Thermx/ThermxController.hpp | 9 +- Plugins/Thermx/ThermxRenderer.cpp | 77 +++++++++++++----- Plugins/Thermx/ThermxRenderer.hpp | 5 +- 13 files changed, 145 insertions(+), 75 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 99f1db0..797999e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -66,6 +66,7 @@ "iomanip": "cpp", "shared_mutex": "cpp", "cfenv": "cpp", - "typeindex": "cpp" + "typeindex": "cpp", + "*.tpp": "cpp" } } \ No newline at end of file diff --git a/Plugins/Thermx/CMakeFiles/thermix.dir/Factory.cpp.o b/Plugins/Thermx/CMakeFiles/thermix.dir/Factory.cpp.o index 6fdcae917328eba29dacb14131987ecae57bfea9..0d78f37c1c781418fb21c0d861a4725964c04a4d 100644 GIT binary patch literal 87112 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 C!lqgP literal 72296 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 diff --git a/Plugins/Thermx/CMakeFiles/thermix.dir/ThermxController.cpp.o.d b/Plugins/Thermx/CMakeFiles/thermix.dir/ThermxController.cpp.o.d index bb84f4f..5e58363 100644 --- a/Plugins/Thermx/CMakeFiles/thermix.dir/ThermxController.cpp.o.d +++ b/Plugins/Thermx/CMakeFiles/thermix.dir/ThermxController.cpp.o.d @@ -160,7 +160,9 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o: \ /usr/include/c++/11/array /usr/include/c++/11/bits/uses_allocator.h \ /usr/include/c++/11/bits/invoke.h \ /usr/include/c++/11/bits/stl_multimap.h \ - /usr/include/c++/11/bits/erase_if.h \ + /usr/include/c++/11/bits/erase_if.h /usr/include/c++/11/atomic \ + /usr/include/c++/11/bits/atomic_base.h \ + /usr/include/c++/11/bits/atomic_lockfree_defines.h \ /home/kanken/code/ARHS-Thermx/Plugins/Thermx/../../../AHRS_core/src/model/hardware/hw/extendables/../serial.hpp \ /usr/include/string.h /usr/include/strings.h /usr/include/c++/11/thread \ /usr/include/c++/11/bits/std_thread.h /usr/include/c++/11/bits/refwrap.h \ @@ -284,8 +286,6 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o: \ /usr/include/c++/11/bits/stl_raw_storage_iter.h \ /usr/include/c++/11/bits/align.h /usr/include/c++/11/bit \ /usr/include/c++/11/bits/shared_ptr_atomic.h \ - /usr/include/c++/11/bits/atomic_base.h \ - /usr/include/c++/11/bits/atomic_lockfree_defines.h \ /usr/include/c++/11/backward/auto_ptr.h \ /usr/include/c++/11/pstl/glue_memory_defs.h \ /usr/local/include/opencv4/opencv2/core/neon_utils.hpp \ @@ -309,7 +309,6 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o: \ /usr/local/include/opencv4/opencv2/core/optim.hpp \ /usr/local/include/opencv4/opencv2/core/ovx.hpp \ /usr/local/include/opencv4/opencv2/core/cvdef.h \ - /usr/include/c++/11/atomic \ /home/kanken/code/ARHS-Thermx/Plugins/Thermx/../../../AHRS_core/src/pipeline/abstract/../../model/perfcheckers/framerate.hpp \ /home/kanken/code/ARHS-Thermx/Plugins/Thermx/../../../AHRS_core/src/pipeline/abstract/../../model/controllers/ui/uiController.hpp \ /home/kanken/code/ARHS-Thermx/Plugins/Thermx/../../../AHRS_core/src/pipeline/abstract/../../model/controllers/ui/../../hardware/cameras/_cam.hpp \ diff --git a/Plugins/Thermx/CMakeFiles/thermix.dir/ThermxRenderer.cpp.o b/Plugins/Thermx/CMakeFiles/thermix.dir/ThermxRenderer.cpp.o index 0f922e54da1168528edb6ca1c99291e52984ff97..7ed9b6954a5bab2258f549d4792dbf7a91ea43f7 100644 GIT binary patch literal 101344 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 diff --git a/Plugins/Thermx/CMakeFiles/thermix.dir/compiler_depend.internal b/Plugins/Thermx/CMakeFiles/thermix.dir/compiler_depend.internal index 5547b18..14ce42c 100644 --- a/Plugins/Thermx/CMakeFiles/thermix.dir/compiler_depend.internal +++ b/Plugins/Thermx/CMakeFiles/thermix.dir/compiler_depend.internal @@ -200,6 +200,9 @@ CMakeFiles/thermix.dir/Factory.cpp.o /usr/include/c++/11/bits/invoke.h /usr/include/c++/11/bits/stl_multimap.h /usr/include/c++/11/bits/erase_if.h + /usr/include/c++/11/atomic + /usr/include/c++/11/bits/atomic_base.h + /usr/include/c++/11/bits/atomic_lockfree_defines.h /home/kanken/code/AHRS_core/src/model/hardware/hw/serial.hpp /usr/include/string.h /usr/include/strings.h @@ -352,8 +355,6 @@ CMakeFiles/thermix.dir/Factory.cpp.o /usr/include/c++/11/bits/align.h /usr/include/c++/11/bit /usr/include/c++/11/bits/shared_ptr_atomic.h - /usr/include/c++/11/bits/atomic_base.h - /usr/include/c++/11/bits/atomic_lockfree_defines.h /usr/include/c++/11/backward/auto_ptr.h /usr/include/c++/11/pstl/glue_memory_defs.h /usr/local/include/opencv4/opencv2/core/neon_utils.hpp @@ -378,7 +379,6 @@ CMakeFiles/thermix.dir/Factory.cpp.o /usr/local/include/opencv4/opencv2/core/optim.hpp /usr/local/include/opencv4/opencv2/core/ovx.hpp /usr/local/include/opencv4/opencv2/core/cvdef.h - /usr/include/c++/11/atomic /home/kanken/code/AHRS_core/src/model/perfcheckers/framerate.hpp /home/kanken/code/AHRS_core/src/model/controllers/ui/uiController.hpp /home/kanken/code/AHRS_core/src/model/hardware/cameras/_cam.hpp @@ -849,6 +849,9 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o /usr/include/c++/11/bits/invoke.h /usr/include/c++/11/bits/stl_multimap.h /usr/include/c++/11/bits/erase_if.h + /usr/include/c++/11/atomic + /usr/include/c++/11/bits/atomic_base.h + /usr/include/c++/11/bits/atomic_lockfree_defines.h /home/kanken/code/AHRS_core/src/model/hardware/hw/serial.hpp /usr/include/string.h /usr/include/strings.h @@ -1001,8 +1004,6 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o /usr/include/c++/11/bits/align.h /usr/include/c++/11/bit /usr/include/c++/11/bits/shared_ptr_atomic.h - /usr/include/c++/11/bits/atomic_base.h - /usr/include/c++/11/bits/atomic_lockfree_defines.h /usr/include/c++/11/backward/auto_ptr.h /usr/include/c++/11/pstl/glue_memory_defs.h /usr/local/include/opencv4/opencv2/core/neon_utils.hpp @@ -1027,7 +1028,6 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o /usr/local/include/opencv4/opencv2/core/optim.hpp /usr/local/include/opencv4/opencv2/core/ovx.hpp /usr/local/include/opencv4/opencv2/core/cvdef.h - /usr/include/c++/11/atomic /home/kanken/code/AHRS_core/src/model/perfcheckers/framerate.hpp /home/kanken/code/AHRS_core/src/model/controllers/ui/uiController.hpp /home/kanken/code/AHRS_core/src/model/hardware/cameras/_cam.hpp diff --git a/Plugins/Thermx/CMakeFiles/thermix.dir/compiler_depend.make b/Plugins/Thermx/CMakeFiles/thermix.dir/compiler_depend.make index 35f15ea..0e672ae 100644 --- a/Plugins/Thermx/CMakeFiles/thermix.dir/compiler_depend.make +++ b/Plugins/Thermx/CMakeFiles/thermix.dir/compiler_depend.make @@ -199,6 +199,9 @@ CMakeFiles/thermix.dir/Factory.cpp.o: Factory.cpp \ /usr/include/c++/11/bits/invoke.h \ /usr/include/c++/11/bits/stl_multimap.h \ /usr/include/c++/11/bits/erase_if.h \ + /usr/include/c++/11/atomic \ + /usr/include/c++/11/bits/atomic_base.h \ + /usr/include/c++/11/bits/atomic_lockfree_defines.h \ /home/kanken/code/AHRS_core/src/model/hardware/hw/serial.hpp \ /usr/include/string.h \ /usr/include/strings.h \ @@ -351,8 +354,6 @@ CMakeFiles/thermix.dir/Factory.cpp.o: Factory.cpp \ /usr/include/c++/11/bits/align.h \ /usr/include/c++/11/bit \ /usr/include/c++/11/bits/shared_ptr_atomic.h \ - /usr/include/c++/11/bits/atomic_base.h \ - /usr/include/c++/11/bits/atomic_lockfree_defines.h \ /usr/include/c++/11/backward/auto_ptr.h \ /usr/include/c++/11/pstl/glue_memory_defs.h \ /usr/local/include/opencv4/opencv2/core/neon_utils.hpp \ @@ -377,7 +378,6 @@ CMakeFiles/thermix.dir/Factory.cpp.o: Factory.cpp \ /usr/local/include/opencv4/opencv2/core/optim.hpp \ /usr/local/include/opencv4/opencv2/core/ovx.hpp \ /usr/local/include/opencv4/opencv2/core/cvdef.h \ - /usr/include/c++/11/atomic \ /home/kanken/code/AHRS_core/src/model/perfcheckers/framerate.hpp \ /home/kanken/code/AHRS_core/src/model/controllers/ui/uiController.hpp \ /home/kanken/code/AHRS_core/src/model/hardware/cameras/_cam.hpp \ @@ -847,6 +847,9 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o: ThermxController.cpp \ /usr/include/c++/11/bits/invoke.h \ /usr/include/c++/11/bits/stl_multimap.h \ /usr/include/c++/11/bits/erase_if.h \ + /usr/include/c++/11/atomic \ + /usr/include/c++/11/bits/atomic_base.h \ + /usr/include/c++/11/bits/atomic_lockfree_defines.h \ /home/kanken/code/AHRS_core/src/model/hardware/hw/serial.hpp \ /usr/include/string.h \ /usr/include/strings.h \ @@ -999,8 +1002,6 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o: ThermxController.cpp \ /usr/include/c++/11/bits/align.h \ /usr/include/c++/11/bit \ /usr/include/c++/11/bits/shared_ptr_atomic.h \ - /usr/include/c++/11/bits/atomic_base.h \ - /usr/include/c++/11/bits/atomic_lockfree_defines.h \ /usr/include/c++/11/backward/auto_ptr.h \ /usr/include/c++/11/pstl/glue_memory_defs.h \ /usr/local/include/opencv4/opencv2/core/neon_utils.hpp \ @@ -1025,7 +1026,6 @@ CMakeFiles/thermix.dir/ThermxController.cpp.o: ThermxController.cpp \ /usr/local/include/opencv4/opencv2/core/optim.hpp \ /usr/local/include/opencv4/opencv2/core/ovx.hpp \ /usr/local/include/opencv4/opencv2/core/cvdef.h \ - /usr/include/c++/11/atomic \ /home/kanken/code/AHRS_core/src/model/perfcheckers/framerate.hpp \ /home/kanken/code/AHRS_core/src/model/controllers/ui/uiController.hpp \ /home/kanken/code/AHRS_core/src/model/hardware/cameras/_cam.hpp \ @@ -2058,12 +2058,6 @@ ThermxController.cpp: /usr/local/include/opencv4/opencv2/flann/defines.h: -ThermxRenderer.hpp: - -/usr/local/include/opencv4/opencv2/core/cuda.inl.hpp: - -/usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h: - /usr/include/x86_64-linux-gnu/c++/11/bits/time_members.h: /usr/include/c++/11/bits/fs_fwd.h: @@ -2208,12 +2202,10 @@ ThermxRenderer.hpp: /usr/include/c++/11/bits/exception.h: -/usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h: - -/usr/include/c++/11/bits/basic_ios.h: - /usr/include/c++/11/bits/uniform_int_dist.h: +/usr/include/c++/11/bits/atomic_lockfree_defines.h: + /usr/include/c++/11/bits/stl_iterator_base_funcs.h: /usr/include/c++/11/bits/streambuf.tcc: @@ -2404,6 +2396,8 @@ ThermxRenderer.hpp: /usr/include/x86_64-linux-gnu/bits/wctype-wchar.h: +/usr/lib/gcc/x86_64-linux-gnu/11/include/adxintrin.h: + /usr/include/x86_64-linux-gnu/c++/11/bits/atomic_word.h: /home/kanken/code/AHRS_core/src/model/patterns/commands/commands.hpp: @@ -2562,6 +2556,10 @@ ThermxRenderer.cpp: /usr/include/oneapi/tbb/detail/_utils.h: +/usr/include/c++/11/bits/atomic_base.h: + +/home/kanken/code/AHRS_core/src/model/hardware/hw/extendables/Device.hpp: + /usr/include/c++/11/bits/stl_function.h: /usr/local/include/opencv4/opencv2/core/cvstd.inl.hpp: @@ -2698,8 +2696,6 @@ ThermxRenderer.cpp: /usr/include/pthread.h: -/usr/include/c++/11/bits/locale_facets_nonio.tcc: - /usr/include/c++/11/bits/stl_pair.h: /usr/include/c++/11/ext/atomicity.h: @@ -2720,12 +2716,6 @@ ThermxRenderer.cpp: /usr/include/c++/11/ext/new_allocator.h: -/usr/include/c++/11/bits/char_traits.h: - -/usr/include/libintl.h: - -/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: - /usr/include/c++/11/bits/locale_facets.h: /usr/include/tbb/parallel_reduce.h: @@ -2740,6 +2730,24 @@ ThermxRenderer.cpp: /usr/lib/gcc/x86_64-linux-gnu/11/include/fxsrintrin.h: +/usr/include/c++/11/bits/basic_ios.h: + +/usr/include/x86_64-linux-gnu/c++/11/bits/messages_members.h: + +ThermxRenderer.hpp: + +/usr/local/include/opencv4/opencv2/core/cuda.inl.hpp: + +/usr/lib/gcc/x86_64-linux-gnu/11/include/immintrin.h: + +/usr/include/c++/11/bits/char_traits.h: + +/usr/include/x86_64-linux-gnu/bits/thread-shared-types.h: + +/usr/include/libintl.h: + +/usr/include/c++/11/bits/locale_facets_nonio.tcc: + /usr/include/c++/11/bits/locale_conv.h: /usr/include/c++/11/bits/quoted_string.h: @@ -2904,12 +2912,6 @@ ThermxRenderer.cpp: /usr/include/c++/11/bits/regex.h: -/home/kanken/code/AHRS_core/src/model/hardware/hw/extendables/Device.hpp: - -/usr/include/c++/11/bits/atomic_base.h: - -/usr/include/c++/11/bits/atomic_lockfree_defines.h: - /usr/include/x86_64-linux-gnu/bits/types/__FILE.h: /usr/include/c++/11/backward/auto_ptr.h: @@ -2948,8 +2950,6 @@ ThermxRenderer.cpp: /usr/lib/gcc/x86_64-linux-gnu/11/include/avx512vpopcntdqintrin.h: -/usr/lib/gcc/x86_64-linux-gnu/11/include/adxintrin.h: - /home/kanken/code/AHRS_core/src/model/perfcheckers/framerate.hpp: /home/kanken/code/AHRS_core/src/model/controllers/ui/uiController.hpp: diff --git a/Plugins/Thermx/CMakeLists.txt b/Plugins/Thermx/CMakeLists.txt index 29a3052..4be5e58 100644 --- a/Plugins/Thermx/CMakeLists.txt +++ b/Plugins/Thermx/CMakeLists.txt @@ -8,8 +8,12 @@ set(thermx_src ThermxRenderer.cpp Factory.cpp ) - set(CMAKE_LIBRARY_OUTPUT_DIRECTORY /home/kanken/code/AHRS_core/src/plugins/) +#SET(GCC_COVERAGE_COMPILE_FLAGS "-fsanitize=undefined,address") +#SET(GCC_COVERAGE_LINK_FLAGS "-fsanitize=undefined,address") + +#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${GCC_COVERAGE_COMPILE_FLAGS}") +#SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${GCC_COVERAGE_LINK_FLAGS}") find_package( OpenCV REQUIRED ) find_package(OpenGL REQUIRED) diff --git a/Plugins/Thermx/ThermxController.cpp b/Plugins/Thermx/ThermxController.cpp index d01b324..3fc9905 100644 --- a/Plugins/Thermx/ThermxController.cpp +++ b/Plugins/Thermx/ThermxController.cpp @@ -13,25 +13,47 @@ std::vector split(std::string str, std::string c){ } void ThermxController::getData(){ - mn::CppLinuxSerial::SerialPort serialPort; std::string s; - serialPort.Write("@"); + if(!(serialPort->GetState() == mn::CppLinuxSerial::State::OPEN)){ + //std::cout << "port was closed, opening..." <Open(); + } + //std::cout << "port is open, sending @" << std::endl; + serialPort->Write("@"); + //std::cout << "done" << std::endl; while(s.find('@') == std::string::npos){ std::string readData; - serialPort.Read(readData); + serialPort->Read(readData); s += readData; } + //std::cout << "done receiving data" << std::endl; s = s.substr(0,s.length()-2); + //std::cout << "trimmed data" << std::endl; std::vector splitted = split(s, "|"); + //std::cout << "split data " << splitted.size() << std::endl; + while(splitted.size() < 32*24){ + splitted.push_back("0.0"); + } + //std::cout << "filled data " << splitted.size() << std::endl; float arr[24][32]; + treated.clear(); + treated.reserve(32*24); int i = 0; int j = 0; for(std::string str : splitted){ arr[j][i] = std::stof(str); + treated.push_back(arr[j][i]); i++; if(i >= 32){ i = 0; j++; } } - _trx->refreshData(arr); + //std::cout << "data sent to array" << std::endl; + if(_trx == NULL){ + //std::cout << "renderer was null?" << std::endl; + }else{ + _trx->refreshData(treated); + } + //std::cout << "data refreshed" << std::endl; + working = false; } \ No newline at end of file diff --git a/Plugins/Thermx/ThermxController.hpp b/Plugins/Thermx/ThermxController.hpp index cb96af7..92d5f0c 100644 --- a/Plugins/Thermx/ThermxController.hpp +++ b/Plugins/Thermx/ThermxController.hpp @@ -4,14 +4,21 @@ class ThermxController : public SerialDevice{ protected: float out_buf[24][32]; ThermxRenderer* _trx; + vector treated; public: - ThermxController(ThermxRenderer* trx) : SerialDevice("/dev/ttyACM"), _trx(trx){ + ThermxController(ThermxRenderer* trx) : SerialDevice("ttyACM"){ + _trx = trx; ic = new IdentifiyCommand(this); this->_tagidentifier = "821ce9ba-a697-487b-a402-32e29b9d599d"; this->_displayName = "thermal camera module"; this->_baudrate = 460800; + this->workDelayMs = 1000/16; } + void doPortWork() override{ + getData(); + } + void getData(); }; diff --git a/Plugins/Thermx/ThermxRenderer.cpp b/Plugins/Thermx/ThermxRenderer.cpp index 70e9af6..12943fe 100644 --- a/Plugins/Thermx/ThermxRenderer.cpp +++ b/Plugins/Thermx/ThermxRenderer.cpp @@ -2,6 +2,7 @@ #define GL_GLEXT_PROTOTYPES #include #include + float RandomFloat(float a, float b) { float random = ((float) rand()) / (float) RAND_MAX; float diff = b - a; @@ -10,30 +11,50 @@ float RandomFloat(float a, float b) { } ThermxRenderer::ThermxRenderer(){ + data = std::vector(); + data.reserve(32*24); for(int i = 0; i < 24; i ++){ for(int j = 0; j < 32; j++){ - data[i][j] = RandomFloat(0.0,40.0); + data.push_back(RandomFloat(0.0,40.0)); } } refreshData(data); } -void ThermxRenderer::refreshData(float newData[24][32]){ +void ThermxRenderer::refreshData(vector newData){ try{ - const std::lock_guard lock(dataMutex); - min = max = data[0][0]; - for(int i = 0; i < 24; i ++){ - for(int j = 0; j < 32; j++){ - float t = data[i][j]; - if(t > max) max = t; - if(t < min) min = t; + //std::cout << "copying data" << std::endl; + dataMutex.lock(); + data.clear(); + data = newData; + + //std::cout << "setting minmax " << newData.size() << std::endl; + int size = data.size(); + //std::cout << data[0]; + //std::cout << "didn't segfault" << std::endl; + max = newData.at(0); + //std::cout << "set minmax" << std::endl; + for(int i = 0; i < 24; i++){ + for(int j = 0; j < 32; j++){ + if(i*32+j >= newData.size()) break; + float t = newData.at(i*32+j); + if(t > max) max = t; + if(t < min) min = t; + } } - } - std::copy(&newData[0][0], &newData[0][0]+24*32,&data[0][0]); - const std::lock_guard llock(matMutex); - draw(); + center = newData.at((24/2)*32+(32/2)); + + data.at((24/2)*32+(32/2)) = 0; + dataMutex.unlock(); + //std::cout << "drawing data" << std::endl; + //matMutex.lock(); + draw(); + //matMutex.unlock(); + //std::cout << "done refreshing data" << std::endl; + + //std::cout << "didn't crash" << std::endl; }catch(exception e){ - std::cout << "thermx render exception: " << e.what() << std::endl; + //std::cout << "thermx render exception: " << e.what() << std::endl; } }; @@ -43,9 +64,11 @@ void ThermxRenderer::draw(){ UcurrentData = cv::UMat(cv::Size(32, 24), CV_8UC3, cv::Scalar(0,0,0)); currentData = cv::Mat(cv::Size(32, 24), CV_8UC3, cv::Scalar(0,0,0)); Mat greyActual = cv::Mat(cv::Size(32, 24), CV_8UC1, cv::Scalar(0)); //black heightxwidth umat - for(int i = 0; i < 24; i ++){ - for(int j = 0; j < 32; j++){ - float t = data[i][j]; + + for(int i = 0; i < 24; i++){ + for(int j = 0; j < 32; j++){ + if(i*32+j >= data.size()) break; + float t = data.at(i*32+j); t -= min; t /= (max - min); //0.0 -> 1.0 int k = t*255; //0 -> 255 @@ -53,16 +76,30 @@ void ThermxRenderer::draw(){ } } applyColorMap(greyActual,currentData,COLORMAP_INFERNO); //pass from grayscale to thermal vision + + for(int i = 0; i < 24; i++){ + for(int j = 0; j < 32; j++){ + if(i*32+j >= data.size()) break; + float t = data.at(i*32+j); + if(t > 34 && t < 40) + currentData.at(i, j) = Vec3b(255,0,0); + } + } currentData.copyTo(UcurrentData); } void ThermxRenderer::processFrame(cv::UMat& input, cv::Point2d& cursorPos){ if(!input.rows <= 0 && !input.cols <= 0){ + ////std::cout << "drawing frame..." << std::endl; cv::UMat output; - cv::resize(UcurrentData, output, cv::Size(input.cols, input.rows), cv::InterpolationFlags::INTER_MAX); - //std::cout << input.cols << input.rows << input.type() << output.rows << output.cols << output.type()<<"\n"; + //matMutex.lock(); + cv::resize(UcurrentData, output, cv::Size(input.cols, input.rows), cv::InterpolationFlags::INTER_NEAREST); + //matMutex.unlock(); + ////std::cout << input.cols << input.rows << input.type() << output.rows << output.cols << output.type()<<"\n"; cv::UMat k(input.size(), input.type()); - cv::addWeighted(input, 1.0, output, 0.3, 0.0, k); + cv::addWeighted(input, 1.0, output, 1.0, 0.0, k); + float fi = center; + cv::putText(k, cv::format("%.2f", fi), Point2i(400,250),cv::FONT_HERSHEY_DUPLEX, 2, cv::Scalar(100, 100, 100), 1, cv::LineTypes::FILLED, false); input = k; } } \ No newline at end of file diff --git a/Plugins/Thermx/ThermxRenderer.hpp b/Plugins/Thermx/ThermxRenderer.hpp index 28b720d..5dcd7bb 100644 --- a/Plugins/Thermx/ThermxRenderer.hpp +++ b/Plugins/Thermx/ThermxRenderer.hpp @@ -1,9 +1,9 @@ #include "../../../AHRS_core/src/pipeline/abstract/pipelineNode.hpp" class ThermxRenderer : public SubNode{ protected: - float data[24][32]; float min = 0; float max = 0; + std::atomic center = 0; int height = 640; int width = 480; cv::Mat currentData = cv::Mat(cv::Size(32, 24), CV_8UC3, cv::Scalar(0,0,0)); @@ -14,7 +14,8 @@ class ThermxRenderer : public SubNode{ void draw(); void drawGL(); public: + vector data; ThermxRenderer(); void processFrame(cv::UMat& input, cv::Point2d& cursorPos) override; - void refreshData(float newData[24][32]); + void refreshData(vector newData); }; \ No newline at end of file