-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsurfaceDataProcessing.cpp
126 lines (113 loc) · 4.93 KB
/
surfaceDataProcessing.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
//
// Created by chaitanya11 on 31.05.23.
//
#include <iostream>
#include <PerceptionData/containers/MarkerDetectionContainer.h>
#include <PerceptionData/containers/ObjectDetectionContainer.h>
#include <PerceptionData/containers/ObjectTagModelDetectionContainer.h>
#include <PerceptionData/containers/PersonDetectionContainer.h>
#include <PerceptionData/containers/SurfaceDetectionContainer.h>
#include <PerceptionData/PerceptionSequence.h>
#include <VisualPerception/utils/Perception.h>
#include <VisualPerception/utils/utils.h>
#include <VisualPerception/inputs/data/ColorData.h>
#include <VisualPerception/inputs/data/DepthData.h>
#include <VisualPerception/inputs/data/PointCloudData.h>
using namespace AndreiUtils;
using namespace cv;
using namespace nlohmann;
using namespace PerceptionData;
using namespace std;
using namespace VisualPerception;
void getPerceptionOutputs() {
Perception p("Perception");
cout << "Before initialize" << endl;
p.initialize();
cout << "Before perceptionInitialization" << endl;
if (!p.perceptionInitialization()) {
return;
}
// <{outputImage: outputImage, inputImageClone: inputImageClone, originalDepth: originalDepth}, depthIntrinsics, {openpose: skeletons, darknet: yoloDetections}>
VisualPerceptionOutputData output;
map<string, PerceptionSequence> sequences;
int count = 0, exit = 0;
//*
namedWindow("Depth - Input", WINDOW_NORMAL);
resizeWindow("Depth - Input", 1352, 1013);
namedWindow("Color - Input", WINDOW_NORMAL);
resizeWindow("Color - Input", 1352, 1013);
namedWindow("Color - Output", WINDOW_NORMAL);
resizeWindow("Color - Output", 1352, 1013);
//*/
PointCloudData::ContentType const *pointCloudData;
cv::Mat const *depthData, *colorData, *outputColorData;
for (; exit == 0; count++) {
// cout << "In while at " << count << endl;
if (!p.perceptionIteration()) {
cout << "Perception Iteration returned false" << endl;
exit = 1;
}
p.getOutput(output);
vector<string> devices = output.getDevicesList();
for (auto const &device: devices) {
PerceptionOutput perceptionOutput(count);
PerceptionDataContainer *deviceOutputContainer;
if (output.getDeviceDataIfContains<MarkerDetectionContainer>(deviceOutputContainer, device)) {
perceptionOutput.set(*(MarkerDetectionContainer *) deviceOutputContainer);
}
if (output.getDeviceDataIfContains<ObjectDetectionContainer>(deviceOutputContainer, device)) {
perceptionOutput.set(*(ObjectDetectionContainer *) deviceOutputContainer);
}
if (output.getDeviceDataIfContains<ObjectTagModelDetectionContainer>(deviceOutputContainer, device)) {
perceptionOutput.set(*(ObjectTagModelDetectionContainer *) deviceOutputContainer);
}
if (output.getDeviceDataIfContains<PersonDetectionContainer>(deviceOutputContainer, device)) {
perceptionOutput.set(*(PersonDetectionContainer *) deviceOutputContainer);
}
if (output.getDeviceDataIfContains<SurfaceDetectionContainer>(deviceOutputContainer, device)) {
perceptionOutput.set(*(SurfaceDetectionContainer *) deviceOutputContainer);
}
if (!mapContains(sequences, device)) {
sequences[device];
}
PerceptionSequence &seq = mapGet(sequences, device);
seq.addPerceptionOutput(perceptionOutput, count);
}
//*
if (output.getInputDataIfContains<PointCloudData>(pointCloudData)) {
cout << "InputCloud: " << (uint32_t *) (*pointCloudData)->data() << endl;
}
//*/
if (output.getInputDataIfContains<DepthData>(depthData)) {
// cout << "InputDepth: " << (uint32_t *) depthData->data << endl;
imshow("Depth - Input", *depthData);
}
if (output.getInputDataIfContains<ColorData>(colorData)) {
// cout << "InputColor: " << (uint32_t *) colorData->data << endl;
imshow("Color - Input", *colorData);
}
if (output.getOutputDataIfContains<ColorData>(outputColorData)) {
// cout << "OutputColor: " << (uint32_t *) outputColorData->data << endl;
imshow("Color - Output", *outputColorData);
}
int key = cv::waitKey(1);
if (key == 27 || key == 'q') {
cout << "Manual stop" << endl;
exit = 1;
}
}
destroyAllWindows();
p.finish();
}
int main() {
cout << "Hello, World!" << endl;
setConfigurationParametersDirectory("../config/");
initializeMarkerDetectionLibForVisualPerception();
initializeDarknetForVisualPerception();
initializeOpenposeForVisualPerception();
initializePclForVisualPerception();
initializePclRealsenseForVisualPerception();
initializeRealsenseForVisualPerception();
getPerceptionOutputs();
return 0;
}