Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
A
ar_sandbox_app
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
AR_Sandbox
ar_sandbox_app
Commits
2b8b819f
Commit
2b8b819f
authored
4 years ago
by
simon.fanetti
Browse files
Options
Downloads
Patches
Plain Diff
adapt to sandbox lib
parent
47bf63a5
No related branches found
No related tags found
No related merge requests found
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
app.cpp
+96
-39
96 additions, 39 deletions
app.cpp
app.h
+18
-0
18 additions, 0 deletions
app.h
beamer_config.sh
+1
-0
1 addition, 0 deletions
beamer_config.sh
sandbox_conf.yaml
+21
-8
21 additions, 8 deletions
sandbox_conf.yaml
with
136 additions
and
47 deletions
app.cpp
+
96
−
39
View file @
2b8b819f
#include
"../ar_sandbox_lib/inc/sandbox.h"
#include
<numeric>
#include
<fstream>
#include
<string>
#include
<opencv2/opencv.hpp>
#include
"app.h"
using
namespace
std
;
using
namespace
cv
;
#define ESCAPE_CHAR 27
Mat
coloredFrame
(
Mat
frameDepth
);
void
showLevel
();
void
showDiff
();
Sandbox
client
;
void
(
*
apps
[
2
])()
=
{
showLevel
,
showDiff
};
Sandbox
sandbox
;
void
(
*
apps
[
1
])()
=
{
showLevel
};
int
main
(
int
argc
,
char
*
argv
[])
{
if
(
client
.
loadConfig
()){
if
(
sandbox
.
loadConfig
()){
std
::
cout
<<
"Failed to load the configuration"
<<
std
::
endl
;
return
1
;
}
//showLevel();
sandbox
.
init
();
apps
[
0
]();
/*cout << "Press: \n 0: Show level \n 1: Show difference \n";
int n = 0;
...
...
@@ -38,32 +23,102 @@ int main(int argc, char *argv[])
apps[n]();*/
}
/*
* App n.1
* Show levels in color
*/
void
showLevel
(){
Mat
frameData
;
Mat
colored
;
float
top
=
sandbox
.
getProjection
()
->
getDistanceTopSandbox
();
float
sandboxHeight
=
0.1
f
;
char
windowName
[]
=
"Sandbox"
;
cv
::
namedWindow
(
windowName
,
CV_WINDOW_NORMAL
);
cv
::
setWindowProperty
(
windowName
,
CV_WND_PROP_FULLSCREEN
,
CV_WINDOW_FULLSCREEN
);
//Mat proj_frame;
//char windowName[] = "Sandbox";
//cv::namedWindow(windowName, CV_WINDOW_AUTOSIZE);
do
{
cv
::
Mat
depth
=
sandbox
.
getDepthFrame
();
cv
::
Mat
colored
=
colorizeDepth
(
depth
,
top
,
sandboxHeight
);
cv
::
Mat
res
;
cv
::
cvtColor
(
colored
,
res
,
CV_BGR2RGB
);
client
.
initWindowsFullScreen
();
res
=
sandbox
.
adjustProjection
(
res
);
cv
::
imshow
(
windowName
,
res
);
do
{
client
.
getDepthFrame
().
copyTo
(
frameData
);
colored
=
coloredFrame
(
frameData
);
}
while
(
cv
::
waitKey
(
10
)
!=
ESCAPE_CHAR
);
cv
::
destroyAllWindows
();
}
//colored.copyTo(proj_frame);
//Mat* res = client.adjustProjection(&proj_frame);
//cv::imshow(windowName, *res);
/*
* Colorize depth frame
*/
cv
::
Mat
colorizeDepth
(
cv
::
Mat
depth
,
float
sandboxTop
,
float
sandboxHeight
){
// matrix with depth from 0 to n, where 0 is the lowest point
cv
::
Mat
normalizedDepth
=
(
depth
-
sandboxTop
)
*
-
1.0
f
+
sandboxHeight
;
normalizedDepth
.
setTo
(
0.0
f
,
normalizedDepth
<
0.0
f
);
normalizedDepth
.
setTo
(
sandboxHeight
,
normalizedDepth
>
sandboxHeight
);
cv
::
Mat
res
=
cv
::
Mat
(
depth
.
rows
,
depth
.
cols
,
CV_8UC3
);
for
(
int
j
=
0
;
j
<
depth
.
rows
;
j
++
){
for
(
int
i
=
0
;
i
<
depth
.
cols
;
i
++
){
//std::cout << "Color" << std::endl;
cv
::
Scalar
color
=
floatToColor
(
normalizedDepth
.
at
<
float
>
(
j
,
i
),
0.0
f
,
sandboxHeight
);
res
.
at
<
cv
::
Vec3b
>
(
j
,
i
)[
0
]
=
color
[
0
];
res
.
at
<
cv
::
Vec3b
>
(
j
,
i
)[
1
]
=
color
[
1
];
res
.
at
<
cv
::
Vec3b
>
(
j
,
i
)[
2
]
=
color
[
2
];
}
}
return
res
;
}
client
.
showImage
(
&
colored
);
}
while
(
waitKey
(
10
)
!=
ESCAPE_CHAR
);
/*
* Return the color matching the value in the gradient color between min and max
* Where :
* red = highest point
* blue = lowest point
*/
cv
::
Scalar
floatToColor
(
float
value
,
float
min
,
float
max
){
const
uint
CHANNEL_MAX
=
255
;
// map for the color gradient (rgb channels)
uint
initColors
[
4
][
3
]
=
{
{
0
,
0
,
CHANNEL_MAX
},
{
0
,
CHANNEL_MAX
,
CHANNEL_MAX
},
{
0
,
CHANNEL_MAX
,
0
},
{
CHANNEL_MAX
,
CHANNEL_MAX
,
0
}
};
int
coeffColors
[
4
][
3
]
=
{
{
0
,
1
,
0
},
{
0
,
0
,
-
1
},
{
1
,
0
,
0
},
{
0
,
-
1
,
0
}
};
cv
::
destroyAllWindows
();
float
clamped
=
value
;
clamped
=
(
clamped
<
min
)
?
min
:
clamped
;
clamped
=
(
clamped
>
max
)
?
max
:
clamped
;
// values goes from 0 to relativeMax
float
relative
=
clamped
-
min
;
float
relativeMax
=
max
-
min
;
uint
colorMax
=
4
*
CHANNEL_MAX
;
uint
color
=
static_cast
<
uint
>
(
relative
*
colorMax
/
relativeMax
);
int
index
=
static_cast
<
uint
>
(
color
/
CHANNEL_MAX
);
// red at the highest point, blue at the lowest
uint8_t
r
=
static_cast
<
uint8_t
>
(
initColors
[
index
][
0
]
+
coeffColors
[
index
][
0
]
*
(
color
%
CHANNEL_MAX
)
);
uint8_t
g
=
static_cast
<
uint8_t
>
(
initColors
[
index
][
1
]
+
coeffColors
[
index
][
1
]
*
(
color
%
CHANNEL_MAX
)
);
uint8_t
b
=
static_cast
<
uint8_t
>
(
initColors
[
index
][
2
]
+
coeffColors
[
index
][
2
]
*
(
color
%
CHANNEL_MAX
)
);
return
cv
::
Scalar
(
r
,
g
,
b
);
}
/*
Mat coloredFrame(Mat frameDepth){
Mat depthFrameColored(frameDepth.size(), CV_8U);
...
...
@@ -101,11 +156,12 @@ Mat coloredFrame(Mat frameDepth){
cv::applyColorMap(depthFrameColored, depthFrameColored, cv::COLORMAP_JET);
depthFrameColored.setTo(cv::Scalar(0, 0, 0), (frameDepth == 0));
return depthFrameColored;
}
void showDiff(){
/*
Mat frameData;
client.getDepthFrame(&frameData);
Mat frameData;
...
...
@@ -129,5 +185,6 @@ void showDiff(){
keyCode = waitKey(10);
} while (keyCode!= ESCAPE_CHAR);
destroyAllWindows();
*/
}
*/
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app.h
0 → 100644
+
18
−
0
View file @
2b8b819f
#ifndef MY_APPS_H
#define MY_APPS_H
#include
"../ar_sandbox_lib/inc/sandbox.h"
#include
<opencv2/opencv.hpp>
#define ESCAPE_CHAR 27
void
showLevel
();
//void showDiff();
cv
::
Scalar
floatToColor
(
float
value
,
float
min
,
float
max
);
cv
::
Mat
colorizeDepth
(
cv
::
Mat
depth
,
float
sandboxTop
,
float
sandboxHeight
);
//Mat coloredFrame(Mat frameDepth);
#endif
This diff is collapsed.
Click to expand it.
beamer_config.sh
+
1
−
0
View file @
2b8b819f
...
...
@@ -3,5 +3,6 @@ SCN_RES=1920x1080
BEAMER
=
HDMI-1
BM_RES
=
1400x1050
xrandr
--output
$SCREEN
--rate
60
--mode
$SCN_RES
--fb
$SCN_RES
--panning
$SCN_RES
*
\
--output
$BEAMER
--mode
$BM_RES
--same-as
$SCREEN
>
/dev/null
This diff is collapsed.
Click to expand it.
sandbox_conf.yaml
+
21
−
8
View file @
2b8b819f
AdjustingMatrix
:
width
:
3
height
:
2
matrix
:
[
1
,
0
,
0
,
-0
,
1
,
0
]
matrix
:
[
0.9998824
,
-0.0153356194
,
3.71817994
,
0.0153356194
,
0.9998824
,
-4.87917471
]
DistanceTopSandbox
:
distance
:
1.10
CroppingMask
:
x
:
160
y
:
120
width
:
320
height
:
245
x
:
176
y
:
121
width
:
326
height
:
250
BeamerResolution
:
width
:
1400
height
:
1050
BeamerPosition
:
x
:
0
y
:
0
z
:
0
x
:
-0.0121798348
y
:
-0.146660045
z
:
0.0548454896
FrameProcessProfil
:
contrast
:
2.2999999999999936
brightness
:
-75
minDistance
:
60
cannyEdgeThreshold
:
137
houghAccThreshold
:
30
minRadius
:
4
maxRadius
:
9
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment