PngConverter.cpp
Go to the documentation of this file.
1
#include "
PngConverter.h
"
2
3
// ArmarX
4
#include <opencv2/imgcodecs.hpp>
5
#include <opencv2/imgproc.hpp>
6
#include <opencv2/imgproc/types_c.h>
7
#include <opencv2/opencv.hpp>
8
9
#include <
RobotAPI/libraries/aron/converter/opencv/OpenCVConverter.h
>
10
11
namespace
armarx::armem::server::ltm::processor::converter::data::image
12
{
13
void
14
PngConverter::configure
(
const
nlohmann::json& json)
15
{
16
}
17
18
PngConverter::ConversionResult
19
PngConverter::_convert
(
const
aron::data::NDArrayPtr
&
data
)
20
{
21
ARMARX_CHECK_NOT_NULL
(
data
);
22
23
auto
img =
aron::data::converter::AronOpenCVConverter::ConvertToMat
(
data
);
24
std::vector<unsigned char> buffer;
25
26
27
auto
shape =
data
->getShape();
// we know from the extraction that the shape has 3 elements
28
ARMARX_CHECK_EQUAL
(shape.size(), 3);
29
30
if
(shape[2] == 3)
// its probably a rgb image
31
{
32
cv::cvtColor(img, img, CV_RGB2BGR);
33
cv::imencode(
suffix
, img, buffer);
34
return
{buffer,
".rgb"
};
35
}
36
37
if
(shape[2] == 1)
// its probably a grayscale image
38
{
39
cv::imencode(
suffix
, img, buffer);
40
return
{buffer,
".gs"
};
41
}
42
43
// try to export without conversion
44
cv::imencode(
suffix
, img, buffer);
45
return
{buffer,
""
};
46
}
47
48
aron::data::NDArrayPtr
49
PngConverter::_convert
(
const
ConversionResult
&
data
,
const
armarx::aron::Path
& p)
50
{
51
if
(
data
.suffix ==
".rgb"
)
52
{
53
cv::Mat img = cv::imdecode(
data
.data, cv::IMREAD_COLOR);
54
cv::cvtColor(img, img, CV_BGR2RGB);
55
return
aron::data::converter::AronOpenCVConverter::ConvertFromMat
(img, p);
56
}
57
58
if
(
data
.suffix ==
".gs"
)
59
{
60
cv::Mat img = cv::imdecode(
data
.data, cv::IMREAD_GRAYSCALE);
61
return
aron::data::converter::AronOpenCVConverter::ConvertFromMat
(img, p);
62
}
63
64
// try to load without conversion
65
cv::Mat img = cv::imdecode(
data
.data, cv::IMREAD_ANYCOLOR);
66
return
aron::data::converter::AronOpenCVConverter::ConvertFromMat
(img, p);
67
}
68
}
// namespace armarx::armem::server::ltm::processor::converter::data::image
OpenCVConverter.h
PngConverter.h
armarx::armem::server::ltm::processor::DataConverter::suffix
const std::string suffix
Definition
Converter.h:51
armarx::armem::server::ltm::processor::converter::data::image::PngConverter::configure
void configure(const nlohmann::json &json) override
Definition
PngConverter.cpp:14
armarx::armem::server::ltm::processor::converter::data::image::PngConverter::_convert
ConversionResult _convert(const aron::data::NDArrayPtr &data) final
Definition
PngConverter.cpp:19
armarx::aron::Path
The Path class.
Definition
Path.h:36
armarx::aron::data::converter::AronOpenCVConverter::ConvertToMat
static cv::Mat ConvertToMat(const data::NDArrayPtr &)
Definition
OpenCVConverter.cpp:33
armarx::aron::data::converter::AronOpenCVConverter::ConvertFromMat
static data::NDArrayPtr ConvertFromMat(const cv::Mat &, const armarx::aron::Path &={})
Definition
OpenCVConverter.cpp:52
ARMARX_CHECK_NOT_NULL
#define ARMARX_CHECK_NOT_NULL(ptr)
This macro evaluates whether ptr is not null and if it turns out to be false it will throw an Express...
Definition
ExpressionException.h:206
ARMARX_CHECK_EQUAL
#define ARMARX_CHECK_EQUAL(lhs, rhs)
This macro evaluates whether lhs is equal (==) rhs and if it turns out to be false it will throw an E...
Definition
ExpressionException.h:130
armarx::armem::server::ltm::processor::converter::data::image
Definition
ExrConverter.cpp:11
armarx::armem::server::ltm::processor::converter::data
Definition
Converter.cpp:4
armarx::aron::data::NDArrayPtr
std::shared_ptr< NDArray > NDArrayPtr
Definition
NDArray.h:46
armarx::armem::server::ltm::processor::DataConverter::ConversionResult
Definition
Converter.h:26
RobotAPI
libraries
armem
server
ltm
processors
converter
data
image
png
PngConverter.cpp
Generated by
1.13.2