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": [
|
"includePath": [
|
||||||
"${workspaceFolder}/**",
|
"${workspaceFolder}/**",
|
||||||
"/opt/pleora/ebus_sdk/Ubuntu-x86_64/include/**",
|
"/opt/pleora/ebus_sdk/Ubuntu-x86_64/include/**",
|
||||||
|
"/usr/include/x86_64-linux-gnu/qt5/**",
|
||||||
"/usr/local/include/opencv4/**"
|
"/usr/local/include/opencv4/**"
|
||||||
],
|
],
|
||||||
"defines": [],
|
"defines": [],
|
||||||
|
|||||||
57
.vscode/settings.json
vendored
57
.vscode/settings.json
vendored
@@ -1,5 +1,60 @@
|
|||||||
{
|
{
|
||||||
"files.associations": {
|
"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( OpenCV REQUIRED )
|
||||||
find_package( Ebus REQUIRED )
|
find_package( Ebus REQUIRED )
|
||||||
find_package( Qt5 COMPONENTS Widgets REQUIRED )
|
find_package( Qt5 COMPONENTS Widgets Network REQUIRED )
|
||||||
|
|
||||||
include_directories(
|
include_directories(
|
||||||
${OpenCV_INCLUDE_DIRS}
|
${OpenCV_INCLUDE_DIRS}
|
||||||
${Ebus_INCLUDE_DIRS}
|
${Ebus_INCLUDE_DIRS}
|
||||||
${Qt5Widgets_INCLUDE_DIRS}
|
${Qt5Widgets_INCLUDE_DIRS}
|
||||||
|
${Qt5Network_INCLUDE_DIRS}
|
||||||
)
|
)
|
||||||
|
|
||||||
add_executable( FaultFinder
|
add_executable( FaultFinder
|
||||||
FaultFinder.cpp
|
FaultFinder.cpp
|
||||||
StreamManager.cpp
|
StreamManager.cpp
|
||||||
ImageAnalyzer.cpp
|
ImageManager.cpp
|
||||||
FaultManager.cpp
|
FaultManager.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -24,4 +25,6 @@ target_link_libraries( FaultFinder
|
|||||||
${OpenCV_LIBS}
|
${OpenCV_LIBS}
|
||||||
${Ebus_LIBRARIES}
|
${Ebus_LIBRARIES}
|
||||||
${Qt5Widgets_LIBRARIES}
|
${Qt5Widgets_LIBRARIES}
|
||||||
|
${Qt5Network_LIBRARIES}
|
||||||
)
|
)
|
||||||
|
message( ${Qt5Network_INCLUDE_DIRS} )
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include "StreamManager.hpp"
|
#include "StreamManager.hpp"
|
||||||
#include "ImageAnalyzer.hpp"
|
#include "ImageManager.hpp"
|
||||||
#include "FaultManager.hpp"
|
#include "FaultManager.hpp"
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
@@ -9,7 +9,7 @@ using namespace std;
|
|||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
StreamManager stream_mgr;
|
StreamManager stream_mgr;
|
||||||
ImageAnalyzer analyzer;
|
ImageManager image_mgr;
|
||||||
FaultManager fault_mgr;
|
FaultManager fault_mgr;
|
||||||
PvString lConnectionID;
|
PvString lConnectionID;
|
||||||
|
|
||||||
@@ -18,7 +18,7 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
if (!analyzer.ProcessImage(0, 0, 0, fault_mgr, true))
|
if (!image_mgr.ProcessImage(0, 0, 0, fault_mgr, true))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@@ -37,7 +37,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
stream_mgr.OpenStream(lConnectionID);
|
stream_mgr.OpenStream(lConnectionID);
|
||||||
|
|
||||||
stream_mgr.AcquireImages(analyzer, fault_mgr);
|
stream_mgr.AcquireImages(image_mgr, fault_mgr);
|
||||||
|
|
||||||
stream_mgr.Disconnect();
|
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/imgcodecs.hpp>
|
||||||
#include <opencv2/imgproc.hpp>
|
#include <opencv2/imgproc.hpp>
|
||||||
|
|
||||||
#include "ImageAnalyzer.hpp"
|
#include "ImageManager.hpp"
|
||||||
#include "FaultManager.hpp"
|
#include "FaultManager.hpp"
|
||||||
|
|
||||||
#define ZERO 0
|
#define ZERO 0
|
||||||
@@ -15,7 +15,7 @@ using namespace cv;
|
|||||||
|
|
||||||
Mat testFrame = imread("/home/midstate/Documents/flirTest.tif", CV_16UC1);
|
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;
|
Mat frame, mask, viewfinder;
|
||||||
std::vector<std::vector<Point>> contours;
|
std::vector<std::vector<Point>> contours;
|
||||||
@@ -84,5 +84,17 @@ bool ImageAnalyzer::ProcessImage(uint32_t width, uint32_t height, uint8_t *imgPo
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Send image to other servers
|
||||||
|
SendImage(viewfinder);
|
||||||
|
|
||||||
return true;
|
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)
|
if (lDevice == NULL || lStream == NULL)
|
||||||
{
|
{
|
||||||
@@ -202,7 +202,7 @@ void StreamManager::AcquireImages(ImageAnalyzer analyzer, FaultManager fault_mgr
|
|||||||
lHeight = lImage->GetHeight();
|
lHeight = lImage->GetHeight();
|
||||||
|
|
||||||
// Process Image
|
// Process Image
|
||||||
if (!analyzer.ProcessImage(lWidth, lHeight, lImage->GetDataPointer(), fault_mgr, false))
|
if (!image_mgr.ProcessImage(lWidth, lHeight, lImage->GetDataPointer(), fault_mgr, false))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
std::cout << " W: " << std::dec << lWidth << " H: " << lHeight;
|
std::cout << " W: " << std::dec << lWidth << " H: " << lHeight;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#include <PvStream.h>
|
#include <PvStream.h>
|
||||||
#include <PvBuffer.h>
|
#include <PvBuffer.h>
|
||||||
|
|
||||||
#include "ImageAnalyzer.hpp"
|
#include "ImageManager.hpp"
|
||||||
#include "FaultManager.hpp"
|
#include "FaultManager.hpp"
|
||||||
|
|
||||||
#define BUFFER_COUNT (32)
|
#define BUFFER_COUNT (32)
|
||||||
@@ -18,7 +18,7 @@ public:
|
|||||||
PvResult FindDevice(PvString *aConnectionID);
|
PvResult FindDevice(PvString *aConnectionID);
|
||||||
PvResult ConnectToDevice(const PvString &aConnectionID);
|
PvResult ConnectToDevice(const PvString &aConnectionID);
|
||||||
PvResult OpenStream(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();
|
void Disconnect();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user