From 7155fce24f4d864bff6c983eeece851a94e35c1b Mon Sep 17 00:00:00 2001 From: Grant Terris Date: Sat, 10 Aug 2019 18:21:38 -0700 Subject: [PATCH] Add Simple Image Processor --- .vscode/c_cpp_properties.json | 3 ++- CMakeLists.txt | 1 + FaultFinder.cpp | 14 ++++++++------ ImageProcessor.cpp | 25 +++++++++++++++++++++++++ ImageProcessor.hpp | 15 +++++++++++++++ StreamManager.cpp | 6 +++++- StreamManager.hpp | 4 +++- 7 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 ImageProcessor.cpp create mode 100644 ImageProcessor.hpp diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json index a20448b..1376527 100644 --- a/.vscode/c_cpp_properties.json +++ b/.vscode/c_cpp_properties.json @@ -4,7 +4,8 @@ "name": "Linux", "includePath": [ "${workspaceFolder}/**", - "/opt/pleora/ebus_sdk/Ubuntu-x86_64/include/**" + "/opt/pleora/ebus_sdk/Ubuntu-x86_64/include/**", + "/usr/local/include/opencv4/**" ], "defines": [], "compilerPath": "/usr/bin/gcc", diff --git a/CMakeLists.txt b/CMakeLists.txt index 53c1f29..87ac93c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ include_directories( add_executable( FaultFinder FaultFinder.cpp StreamManager.cpp + ImageProcessor.cpp ) target_link_libraries( FaultFinder diff --git a/FaultFinder.cpp b/FaultFinder.cpp index 22c3336..68cc2ba 100644 --- a/FaultFinder.cpp +++ b/FaultFinder.cpp @@ -1,30 +1,32 @@ #include #include "StreamManager.hpp" +#include "ImageProcessor.hpp" using namespace std; int main() { - StreamManager mgr; + ImageProcessor processor; + StreamManager manager; PvString lConnectionID; // If no devies are found, exit. - if (mgr.FindDevice(&lConnectionID).IsFailure()) + if (manager.FindDevice(&lConnectionID).IsFailure()) { return -1; } - if (mgr.ConnectToDevice(lConnectionID).IsFailure()) + if (manager.ConnectToDevice(lConnectionID).IsFailure()) { return -1; } - mgr.OpenStream(lConnectionID); + manager.OpenStream(lConnectionID); - mgr.AcquireImages(); + manager.AcquireImages(processor); - mgr.Disconnect(); + manager.Disconnect(); return 0; } \ No newline at end of file diff --git a/ImageProcessor.cpp b/ImageProcessor.cpp new file mode 100644 index 0000000..9b94d07 --- /dev/null +++ b/ImageProcessor.cpp @@ -0,0 +1,25 @@ +#include +#include +#include +#include + +#include "ImageProcessor.hpp" + +using namespace cv; + +void ImageProcessor::ProcessImage(uint32_t width, uint32_t height, uint8_t *imgPointer) +{ + Mat frame(height, width, CV_16U, imgPointer, Mat::AUTO_STEP); + + //normalize(frame, scaled, 0, 255, NORM_MINMAX); + //scaled.convertTo(scaled, CV_8UC1); + + //applyColorMap(scaled, color, COLORMAP_JET); + + //namedWindow("FLIR", WINDOW_AUTOSIZE); + //imshow("FLIR", color); + int key = waitKey(1); + //if key == 27, then break + //release() + //destroyAllWindows() +} \ No newline at end of file diff --git a/ImageProcessor.hpp b/ImageProcessor.hpp new file mode 100644 index 0000000..fea1b3b --- /dev/null +++ b/ImageProcessor.hpp @@ -0,0 +1,15 @@ +#ifndef IMAGEPROCESSOR_H +#define IMAGEPROCESSOR_H + +#include + +class ImageProcessor +{ + +public: + + void ProcessImage(uint32_t width, uint32_t height, uint8_t *imgPointer); + +}; + +#endif \ No newline at end of file diff --git a/StreamManager.cpp b/StreamManager.cpp index 0206cc1..30c8667 100644 --- a/StreamManager.cpp +++ b/StreamManager.cpp @@ -133,7 +133,7 @@ void StreamManager::CreateStreamBuffers() } } -void StreamManager::AcquireImages() +void StreamManager::AcquireImages(ImageProcessor processor) { if (lDevice == NULL || lStream == NULL) { @@ -198,6 +198,10 @@ void StreamManager::AcquireImages() // Read width, height. lWidth = lImage->GetWidth(); lHeight = lImage->GetHeight(); + + // Process Image + processor.ProcessImage(lWidth, lHeight, lImage->GetDataPointer()); + std::cout << " W: " << std::dec << lWidth << " H: " << lHeight; } else diff --git a/StreamManager.hpp b/StreamManager.hpp index d521f38..148d32b 100644 --- a/StreamManager.hpp +++ b/StreamManager.hpp @@ -4,6 +4,8 @@ #include #include +#include "ImageProcessor.hpp" + #define BUFFER_COUNT (32) typedef std::list BufferList; @@ -15,7 +17,7 @@ public: PvResult FindDevice(PvString *aConnectionID); PvResult ConnectToDevice(const PvString &aConnectionID); PvResult OpenStream(const PvString &aConnectionID); - void AcquireImages(); + void AcquireImages(ImageProcessor processor); void Disconnect(); private: