Add Socket Support
This commit is contained in:
1
.vscode/c_cpp_properties.json
vendored
1
.vscode/c_cpp_properties.json
vendored
@@ -5,6 +5,7 @@
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**",
|
||||
"/opt/pleora/ebus_sdk/Ubuntu-x86_64/include/**",
|
||||
"/usr/include/x86_64-linux-gnu/qt5/**",
|
||||
"/usr/local/include/opencv4/**"
|
||||
],
|
||||
"defines": [],
|
||||
|
||||
57
.vscode/settings.json
vendored
57
.vscode/settings.json
vendored
@@ -1,5 +1,60 @@
|
||||
{
|
||||
"files.associations": {
|
||||
"iostream": "cpp"
|
||||
"iostream": "cpp",
|
||||
"qudpsocket": "cpp",
|
||||
"array": "cpp",
|
||||
"atomic": "cpp",
|
||||
"*.tcc": "cpp",
|
||||
"cctype": "cpp",
|
||||
"chrono": "cpp",
|
||||
"clocale": "cpp",
|
||||
"cmath": "cpp",
|
||||
"complex": "cpp",
|
||||
"condition_variable": "cpp",
|
||||
"cstdarg": "cpp",
|
||||
"cstddef": "cpp",
|
||||
"cstdint": "cpp",
|
||||
"cstdio": "cpp",
|
||||
"cstdlib": "cpp",
|
||||
"cstring": "cpp",
|
||||
"ctime": "cpp",
|
||||
"cwchar": "cpp",
|
||||
"cwctype": "cpp",
|
||||
"deque": "cpp",
|
||||
"list": "cpp",
|
||||
"unordered_map": "cpp",
|
||||
"vector": "cpp",
|
||||
"exception": "cpp",
|
||||
"algorithm": "cpp",
|
||||
"functional": "cpp",
|
||||
"iterator": "cpp",
|
||||
"map": "cpp",
|
||||
"memory": "cpp",
|
||||
"memory_resource": "cpp",
|
||||
"numeric": "cpp",
|
||||
"optional": "cpp",
|
||||
"ratio": "cpp",
|
||||
"set": "cpp",
|
||||
"string": "cpp",
|
||||
"string_view": "cpp",
|
||||
"system_error": "cpp",
|
||||
"tuple": "cpp",
|
||||
"type_traits": "cpp",
|
||||
"utility": "cpp",
|
||||
"fstream": "cpp",
|
||||
"initializer_list": "cpp",
|
||||
"iomanip": "cpp",
|
||||
"iosfwd": "cpp",
|
||||
"istream": "cpp",
|
||||
"limits": "cpp",
|
||||
"mutex": "cpp",
|
||||
"new": "cpp",
|
||||
"ostream": "cpp",
|
||||
"sstream": "cpp",
|
||||
"stdexcept": "cpp",
|
||||
"streambuf": "cpp",
|
||||
"thread": "cpp",
|
||||
"cinttypes": "cpp",
|
||||
"typeinfo": "cpp"
|
||||
}
|
||||
}
|
||||
@@ -5,18 +5,19 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
|
||||
find_package( OpenCV REQUIRED )
|
||||
find_package( Ebus REQUIRED )
|
||||
find_package( Qt5 COMPONENTS Widgets REQUIRED )
|
||||
find_package( Qt5 COMPONENTS Widgets Network REQUIRED )
|
||||
|
||||
include_directories(
|
||||
${OpenCV_INCLUDE_DIRS}
|
||||
${Ebus_INCLUDE_DIRS}
|
||||
${Qt5Widgets_INCLUDE_DIRS}
|
||||
${Qt5Network_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
add_executable( FaultFinder
|
||||
FaultFinder.cpp
|
||||
StreamManager.cpp
|
||||
ImageAnalyzer.cpp
|
||||
ImageManager.cpp
|
||||
FaultManager.cpp
|
||||
)
|
||||
|
||||
@@ -24,4 +25,6 @@ target_link_libraries( FaultFinder
|
||||
${OpenCV_LIBS}
|
||||
${Ebus_LIBRARIES}
|
||||
${Qt5Widgets_LIBRARIES}
|
||||
${Qt5Network_LIBRARIES}
|
||||
)
|
||||
message( ${Qt5Network_INCLUDE_DIRS} )
|
||||
@@ -1,7 +1,7 @@
|
||||
#include <iostream>
|
||||
|
||||
#include "StreamManager.hpp"
|
||||
#include "ImageAnalyzer.hpp"
|
||||
#include "ImageManager.hpp"
|
||||
#include "FaultManager.hpp"
|
||||
|
||||
using namespace std;
|
||||
@@ -9,7 +9,7 @@ using namespace std;
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
StreamManager stream_mgr;
|
||||
ImageAnalyzer analyzer;
|
||||
ImageManager image_mgr;
|
||||
FaultManager fault_mgr;
|
||||
PvString lConnectionID;
|
||||
|
||||
@@ -18,7 +18,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
while(1)
|
||||
{
|
||||
if (!analyzer.ProcessImage(0, 0, 0, fault_mgr, true))
|
||||
if (!image_mgr.ProcessImage(0, 0, 0, fault_mgr, true))
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
@@ -37,7 +37,7 @@ int main(int argc, char **argv)
|
||||
|
||||
stream_mgr.OpenStream(lConnectionID);
|
||||
|
||||
stream_mgr.AcquireImages(analyzer, fault_mgr);
|
||||
stream_mgr.AcquireImages(image_mgr, fault_mgr);
|
||||
|
||||
stream_mgr.Disconnect();
|
||||
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
#ifndef IMAGEANALYZER_H
|
||||
#define IMAGEANALYZER_H
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
#include "FaultManager.hpp"
|
||||
|
||||
#define THROTTLE_AMOUNT 1
|
||||
|
||||
class ImageAnalyzer
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
bool ProcessImage(uint32_t width, uint32_t height, uint8_t *imgPointer, FaultManager fault_mgr, bool test);
|
||||
|
||||
private:
|
||||
|
||||
int throttle_count = 1;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <opencv2/imgcodecs.hpp>
|
||||
#include <opencv2/imgproc.hpp>
|
||||
|
||||
#include "ImageAnalyzer.hpp"
|
||||
#include "ImageManager.hpp"
|
||||
#include "FaultManager.hpp"
|
||||
|
||||
#define ZERO 0
|
||||
@@ -15,7 +15,7 @@ using namespace cv;
|
||||
|
||||
Mat testFrame = imread("/home/midstate/Documents/flirTest.tif", CV_16UC1);
|
||||
|
||||
bool ImageAnalyzer::ProcessImage(uint32_t width, uint32_t height, uint8_t *imgPointer, FaultManager fault_mgr, bool test = false)
|
||||
bool ImageManager::ProcessImage(uint32_t width, uint32_t height, uint8_t *imgPointer, FaultManager fault_mgr, bool test = false)
|
||||
{
|
||||
Mat frame, mask, viewfinder;
|
||||
std::vector<std::vector<Point>> contours;
|
||||
@@ -84,5 +84,17 @@ bool ImageAnalyzer::ProcessImage(uint32_t width, uint32_t height, uint8_t *imgPo
|
||||
return false;
|
||||
}
|
||||
|
||||
// Send image to other servers
|
||||
SendImage(viewfinder);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void ImageManager::SendImage(Mat image)
|
||||
{
|
||||
std::vector<uchar> buff;
|
||||
cv::imencode(".jpg", image, buff);
|
||||
|
||||
QByteArray *datagram = new QByteArray(reinterpret_cast<const char*>(buff.data()), buff.size());
|
||||
socket->write(*datagram);
|
||||
}
|
||||
31
ImageManager.hpp
Normal file
31
ImageManager.hpp
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef ImageManager_H
|
||||
#define ImageManager_H
|
||||
|
||||
#include <opencv2/core.hpp>
|
||||
#include <QUdpSocket>
|
||||
#include "FaultManager.hpp"
|
||||
|
||||
#define THROTTLE_AMOUNT 1
|
||||
|
||||
class ImageManager
|
||||
{
|
||||
|
||||
public:
|
||||
|
||||
bool ProcessImage(uint32_t width, uint32_t height, uint8_t *imgPointer, FaultManager fault_mgr, bool test);
|
||||
void SendImage(cv::Mat image);
|
||||
|
||||
QUdpSocket *socket;
|
||||
|
||||
ImageManager() {
|
||||
socket = new QUdpSocket();
|
||||
socket->connectToHost(QHostAddress::LocalHost, 40000, QIODevice::ReadWrite);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
int throttle_count = 1;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -134,7 +134,7 @@ void StreamManager::CreateStreamBuffers()
|
||||
}
|
||||
}
|
||||
|
||||
void StreamManager::AcquireImages(ImageAnalyzer analyzer, FaultManager fault_mgr)
|
||||
void StreamManager::AcquireImages(ImageManager image_mgr, FaultManager fault_mgr)
|
||||
{
|
||||
if (lDevice == NULL || lStream == NULL)
|
||||
{
|
||||
@@ -202,7 +202,7 @@ void StreamManager::AcquireImages(ImageAnalyzer analyzer, FaultManager fault_mgr
|
||||
lHeight = lImage->GetHeight();
|
||||
|
||||
// Process Image
|
||||
if (!analyzer.ProcessImage(lWidth, lHeight, lImage->GetDataPointer(), fault_mgr, false))
|
||||
if (!image_mgr.ProcessImage(lWidth, lHeight, lImage->GetDataPointer(), fault_mgr, false))
|
||||
break;
|
||||
|
||||
std::cout << " W: " << std::dec << lWidth << " H: " << lHeight;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#include <PvStream.h>
|
||||
#include <PvBuffer.h>
|
||||
|
||||
#include "ImageAnalyzer.hpp"
|
||||
#include "ImageManager.hpp"
|
||||
#include "FaultManager.hpp"
|
||||
|
||||
#define BUFFER_COUNT (32)
|
||||
@@ -18,7 +18,7 @@ public:
|
||||
PvResult FindDevice(PvString *aConnectionID);
|
||||
PvResult ConnectToDevice(const PvString &aConnectionID);
|
||||
PvResult OpenStream(const PvString &aConnectionID);
|
||||
void AcquireImages(ImageAnalyzer analyzer, FaultManager fault_mgr);
|
||||
void AcquireImages(ImageManager image_mgr, FaultManager fault_mgr);
|
||||
void Disconnect();
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user