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/opencv.hpp>
7 
9 
11 {
12  void
13  PngConverter::configure(const nlohmann::json& json)
14  {
15  }
16 
19  {
21 
23  std::vector<unsigned char> buffer;
24 
25 
26  auto shape = data->getShape(); // we know from the extraction that the shape has 3 elements
27  ARMARX_CHECK_EQUAL(shape.size(), 3);
28 
29  if (shape[2] == 3) // its probably a rgb image
30  {
31  cv::cvtColor(img, img, CV_RGB2BGR);
32  cv::imencode(suffix, img, buffer);
33  return {buffer, ".rgb"};
34  }
35 
36  if (shape[2] == 1) // its probably a grayscale image
37  {
38  cv::imencode(suffix, img, buffer);
39  return {buffer, ".gs"};
40  }
41 
42  // try to export without conversion
43  cv::imencode(suffix, img, buffer);
44  return {buffer, ""};
45  }
46 
49  {
50  if (data.suffix == ".rgb")
51  {
52  cv::Mat img = cv::imdecode(data.data, cv::IMREAD_COLOR);
53  cv::cvtColor(img, img, CV_BGR2RGB);
55  }
56 
57  if (data.suffix == ".gs")
58  {
59  cv::Mat img = cv::imdecode(data.data, cv::IMREAD_GRAYSCALE);
61  }
62 
63  // try to load without conversion
64  cv::Mat img = cv::imdecode(data.data, cv::IMREAD_ANYCOLOR);
66  }
67 } // namespace armarx::armem::server::ltm::processor::converter::data::image
armarx::armem::server::ltm::processor::converter::data::image::PngConverter::configure
void configure(const nlohmann::json &json) override
Definition: PngConverter.cpp:13
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::aron::data::NDArrayPtr
std::shared_ptr< NDArray > NDArrayPtr
Definition: NDArray.h:46
armarx::armem::server::ltm::processor::converter::data::image::PngConverter::_convert
ConversionResult _convert(const aron::data::NDArrayPtr &data) final
Definition: PngConverter.cpp:18
armarx::aron::Path
The Path class.
Definition: Path.h:36
armarx::aron::data::converter::AronOpenCVConverter::ConvertFromMat
static data::NDArrayPtr ConvertFromMat(const cv::Mat &, const armarx::aron::Path &={})
Definition: OpenCVConverter.cpp:52
data
uint8_t data[1]
Definition: EtherCATFrame.h:68
OpenCVConverter.h
armarx::armem::server::ltm::processor::DataConverter::suffix
const std::string suffix
Definition: Converter.h:51
armarx::aron::data::converter::AronOpenCVConverter::ConvertToMat
static cv::Mat ConvertToMat(const data::NDArrayPtr &)
Definition: OpenCVConverter.cpp:33
armarx::armem::server::ltm::processor::converter::data::image
Definition: ExrConverter.cpp:10
armarx::armem::server::ltm::processor::DataConverter::ConversionResult
Definition: Converter.h:25
PngConverter.h
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