Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 2 additions & 3 deletions src/accelerated_image_processor_common/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,13 @@ add_library(${PROJECT_NAME} INTERFACE)
target_include_directories(
${PROJECT_NAME}
INTERFACE $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>)
$<INSTALL_INTERFACE:include> /opt/ros/$ENV{ROS_DISTRO}/include)

install(TARGETS ${PROJECT_NAME} EXPORT export_${PROJECT_NAME})
install(DIRECTORY include/${PROJECT_NAME} DESTINATION include)

if(BUILD_TESTING)
find_package(ament_lint_auto REQUIRED)
ament_lint_auto_find_test_dependencies()

endif()

ament_export_targets(export_${PROJECT_NAME})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,8 @@
#include "accelerated_image_processor_common/datatype.hpp"
#include "accelerated_image_processor_common/parameter.hpp"

#include <optional>
#include <tl_expected/expected.hpp>

#include <string>
#include <type_traits>
#include <utility>
Expand Down Expand Up @@ -66,6 +67,12 @@ class BaseProcessor
}

public:
/**
* @brief Output result type of processed image. If successful, returns the processed image.
* Otherwise, returns an error message.
*/
using result_t = tl::expected<Image, std::string>;

/**
* @brief Constructor.
*/
Expand Down Expand Up @@ -95,22 +102,18 @@ class BaseProcessor
/**
* @brief Process the input image.
* @param image The input image.
* @return The processed image if the process is successful, otherwise std::nullopt.
* @return The processed image or an error message.
*/
std::optional<common::Image> process(const Image & image)
result_t process(const Image & image)
{
if (!is_ready()) {
// TODO(ktro2828): Update to return a type that describes if the process success or not
// instead of void
return std::nullopt;
return tl::make_unexpected("Failed to process: process is not ready");
}

auto processed = this->process_impl(image);

if (!processed.is_valid()) {
// TODO(ktro2828): Update to return a type that describes if the process success or not
// instead of void
return std::nullopt;
return tl::make_unexpected("Failed to process: invalid processed image");
}

std::visit(
Expand Down
2 changes: 2 additions & 0 deletions src/accelerated_image_processor_common/package.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@

<buildtool_depend>ament_cmake</buildtool_depend>

<depend>tl_expected</depend>

<test_depend>ament_lint_auto</test_depend>
<test_depend>ament_lint_common</test_depend>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ TEST_F(TestJPEGCompressor, CpuCompressionDefault)
{
auto compressor = make_cpujpeg_compressor();
compressor->register_postprocess<TestJPEGCompressor, &TestJPEGCompressor::check>(this);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestJPEGCompressor, CpuCompressionWithLowQuality)
Expand All @@ -37,7 +38,8 @@ TEST_F(TestJPEGCompressor, CpuCompressionWithLowQuality)
}
}
EXPECT_EQ(compressor->parameter_value<int>("quality"), 10);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestJPEGCompressor, CpuCompressionWithHighQuality)
Expand All @@ -50,7 +52,8 @@ TEST_F(TestJPEGCompressor, CpuCompressionWithHighQuality)
}
}
EXPECT_EQ(compressor->parameter_value<int>("quality"), 90);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}
} // namespace accelerated_image_processor::compression
#else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ TEST_F(TestJPEGCompressor, JetsonCompressionDefault)
{
auto compressor = make_jetsonjpeg_compressor();
compressor->register_postprocess<TestJPEGCompressor, &TestJPEGCompressor::check>(this);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestJPEGCompressor, JetsonCompressionWithLowQuality)
Expand All @@ -37,7 +38,8 @@ TEST_F(TestJPEGCompressor, JetsonCompressionWithLowQuality)
}
}
EXPECT_EQ(compressor->parameter_value<int>("quality"), 10);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestJPEGCompressor, JetsonCompressionWithHighQuality)
Expand All @@ -50,7 +52,8 @@ TEST_F(TestJPEGCompressor, JetsonCompressionWithHighQuality)
}
}
EXPECT_EQ(compressor->parameter_value<int>("quality"), 90);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}
} // namespace accelerated_image_processor::compression
#else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ TEST_F(TestJPEGCompressor, NvJPEGCompressionDefault)
{
auto compressor = make_nvjpeg_compressor();
compressor->register_postprocess<TestJPEGCompressor, &TestJPEGCompressor::check>(this);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestJPEGCompressor, NvJPEGCompressionWithLowQuality)
Expand All @@ -37,7 +38,8 @@ TEST_F(TestJPEGCompressor, NvJPEGCompressionWithLowQuality)
}
}
EXPECT_EQ(compressor->parameter_value<int>("quality"), 10);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestJPEGCompressor, NvJPEGCompressionWithHighQuality)
Expand All @@ -50,7 +52,8 @@ TEST_F(TestJPEGCompressor, NvJPEGCompressionWithHighQuality)
}
}
EXPECT_EQ(compressor->parameter_value<int>("quality"), 90);
compressor->process(get_image());
const auto result = compressor->process(get_image());
EXPECT_TRUE(result);
}
} // namespace accelerated_image_processor::compression
#else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ TEST_F(TestRectifier, CpuRectificationDefault)
auto rectifier = make_cpu_rectifier();
rectifier->register_postprocess<TestRectifier, &TestRectifier::check>(this);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestRectifier, CpuRectificationLowAlpha)
Expand All @@ -38,7 +39,8 @@ TEST_F(TestRectifier, CpuRectificationLowAlpha)
}
EXPECT_EQ(rectifier->parameter_value<double>("alpha"), 0.0);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestRectifier, CpuRectificationHighAlpha)
Expand All @@ -52,7 +54,8 @@ TEST_F(TestRectifier, CpuRectificationHighAlpha)
}
EXPECT_EQ(rectifier->parameter_value<double>("alpha"), 1.0);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}
} // namespace accelerated_image_processor::pipeline

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ TEST_F(TestRectifier, NppRectificationDefault)
auto rectifier = make_npp_rectifier();
rectifier->register_postprocess<TestRectifier, &TestRectifier::check>(this);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestRectifier, NppRectificationLowAlpha)
Expand All @@ -39,7 +40,8 @@ TEST_F(TestRectifier, NppRectificationLowAlpha)
}
EXPECT_EQ(rectifier->parameter_value<double>("alpha"), 0.0);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestRectifier, NppRectificationHighAlpha)
Expand All @@ -53,7 +55,8 @@ TEST_F(TestRectifier, NppRectificationHighAlpha)
}
EXPECT_EQ(rectifier->parameter_value<double>("alpha"), 1.0);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}
} // namespace accelerated_image_processor::pipeline
#else
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ TEST_F(TestRectifier, OpenCvCudaRectificationDefault)
auto rectifier = make_opencv_cuda_rectifier();
rectifier->register_postprocess<TestRectifier, &TestRectifier::check>(this);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestRectifier, OpenCvCudaRectificationLowAlpha)
Expand All @@ -39,7 +40,8 @@ TEST_F(TestRectifier, OpenCvCudaRectificationLowAlpha)
}
EXPECT_EQ(rectifier->parameter_value<double>("alpha"), 0.0);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}

TEST_F(TestRectifier, OpenCvCudaRectificationHighAlpha)
Expand All @@ -53,7 +55,8 @@ TEST_F(TestRectifier, OpenCvCudaRectificationHighAlpha)
}
EXPECT_EQ(rectifier->parameter_value<double>("alpha"), 1.0);
rectifier->set_camera_info(get_camera_info());
rectifier->process(get_image());
const auto result = rectifier->process(get_image());
EXPECT_TRUE(result);
}
} // namespace accelerated_image_processor::pipeline
#else
Expand Down