diff --git a/src/accelerated_image_processor_common/CMakeLists.txt b/src/accelerated_image_processor_common/CMakeLists.txt index c4e8f9e..1a1f5d3 100644 --- a/src/accelerated_image_processor_common/CMakeLists.txt +++ b/src/accelerated_image_processor_common/CMakeLists.txt @@ -18,14 +18,13 @@ add_library(${PROJECT_NAME} INTERFACE) target_include_directories( ${PROJECT_NAME} INTERFACE $ - $) + $ /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}) diff --git a/src/accelerated_image_processor_common/include/accelerated_image_processor_common/processor.hpp b/src/accelerated_image_processor_common/include/accelerated_image_processor_common/processor.hpp index d171286..6be70ab 100644 --- a/src/accelerated_image_processor_common/include/accelerated_image_processor_common/processor.hpp +++ b/src/accelerated_image_processor_common/include/accelerated_image_processor_common/processor.hpp @@ -17,7 +17,8 @@ #include "accelerated_image_processor_common/datatype.hpp" #include "accelerated_image_processor_common/parameter.hpp" -#include +#include + #include #include #include @@ -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; + /** * @brief Constructor. */ @@ -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 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( diff --git a/src/accelerated_image_processor_common/package.xml b/src/accelerated_image_processor_common/package.xml index dafd24f..12e5309 100644 --- a/src/accelerated_image_processor_common/package.xml +++ b/src/accelerated_image_processor_common/package.xml @@ -9,6 +9,8 @@ ament_cmake + tl_expected + ament_lint_auto ament_lint_common diff --git a/src/accelerated_image_processor_compression/test/cpu_jpeg_compressor.cpp b/src/accelerated_image_processor_compression/test/cpu_jpeg_compressor.cpp index 1631a55..6399eb0 100644 --- a/src/accelerated_image_processor_compression/test/cpu_jpeg_compressor.cpp +++ b/src/accelerated_image_processor_compression/test/cpu_jpeg_compressor.cpp @@ -24,7 +24,8 @@ TEST_F(TestJPEGCompressor, CpuCompressionDefault) { auto compressor = make_cpujpeg_compressor(); compressor->register_postprocess(this); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } TEST_F(TestJPEGCompressor, CpuCompressionWithLowQuality) @@ -37,7 +38,8 @@ TEST_F(TestJPEGCompressor, CpuCompressionWithLowQuality) } } EXPECT_EQ(compressor->parameter_value("quality"), 10); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } TEST_F(TestJPEGCompressor, CpuCompressionWithHighQuality) @@ -50,7 +52,8 @@ TEST_F(TestJPEGCompressor, CpuCompressionWithHighQuality) } } EXPECT_EQ(compressor->parameter_value("quality"), 90); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } } // namespace accelerated_image_processor::compression #else diff --git a/src/accelerated_image_processor_compression/test/jetson_jpeg_compressor.cpp b/src/accelerated_image_processor_compression/test/jetson_jpeg_compressor.cpp index 8cc1e9b..9634797 100644 --- a/src/accelerated_image_processor_compression/test/jetson_jpeg_compressor.cpp +++ b/src/accelerated_image_processor_compression/test/jetson_jpeg_compressor.cpp @@ -24,7 +24,8 @@ TEST_F(TestJPEGCompressor, JetsonCompressionDefault) { auto compressor = make_jetsonjpeg_compressor(); compressor->register_postprocess(this); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } TEST_F(TestJPEGCompressor, JetsonCompressionWithLowQuality) @@ -37,7 +38,8 @@ TEST_F(TestJPEGCompressor, JetsonCompressionWithLowQuality) } } EXPECT_EQ(compressor->parameter_value("quality"), 10); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } TEST_F(TestJPEGCompressor, JetsonCompressionWithHighQuality) @@ -50,7 +52,8 @@ TEST_F(TestJPEGCompressor, JetsonCompressionWithHighQuality) } } EXPECT_EQ(compressor->parameter_value("quality"), 90); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } } // namespace accelerated_image_processor::compression #else diff --git a/src/accelerated_image_processor_compression/test/nv_jpeg_compressor.cpp b/src/accelerated_image_processor_compression/test/nv_jpeg_compressor.cpp index 8afac1c..023ccb1 100644 --- a/src/accelerated_image_processor_compression/test/nv_jpeg_compressor.cpp +++ b/src/accelerated_image_processor_compression/test/nv_jpeg_compressor.cpp @@ -24,7 +24,8 @@ TEST_F(TestJPEGCompressor, NvJPEGCompressionDefault) { auto compressor = make_nvjpeg_compressor(); compressor->register_postprocess(this); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } TEST_F(TestJPEGCompressor, NvJPEGCompressionWithLowQuality) @@ -37,7 +38,8 @@ TEST_F(TestJPEGCompressor, NvJPEGCompressionWithLowQuality) } } EXPECT_EQ(compressor->parameter_value("quality"), 10); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } TEST_F(TestJPEGCompressor, NvJPEGCompressionWithHighQuality) @@ -50,7 +52,8 @@ TEST_F(TestJPEGCompressor, NvJPEGCompressionWithHighQuality) } } EXPECT_EQ(compressor->parameter_value("quality"), 90); - compressor->process(get_image()); + const auto result = compressor->process(get_image()); + EXPECT_TRUE(result); } } // namespace accelerated_image_processor::compression #else diff --git a/src/accelerated_image_processor_pipeline/test/cpu_rectifier.cpp b/src/accelerated_image_processor_pipeline/test/cpu_rectifier.cpp index 49696ae..b0f4032 100644 --- a/src/accelerated_image_processor_pipeline/test/cpu_rectifier.cpp +++ b/src/accelerated_image_processor_pipeline/test/cpu_rectifier.cpp @@ -24,7 +24,8 @@ TEST_F(TestRectifier, CpuRectificationDefault) auto rectifier = make_cpu_rectifier(); rectifier->register_postprocess(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) @@ -38,7 +39,8 @@ TEST_F(TestRectifier, CpuRectificationLowAlpha) } EXPECT_EQ(rectifier->parameter_value("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) @@ -52,7 +54,8 @@ TEST_F(TestRectifier, CpuRectificationHighAlpha) } EXPECT_EQ(rectifier->parameter_value("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 diff --git a/src/accelerated_image_processor_pipeline/test/npp_rectifier.cpp b/src/accelerated_image_processor_pipeline/test/npp_rectifier.cpp index ddeef88..f4db7b7 100644 --- a/src/accelerated_image_processor_pipeline/test/npp_rectifier.cpp +++ b/src/accelerated_image_processor_pipeline/test/npp_rectifier.cpp @@ -25,7 +25,8 @@ TEST_F(TestRectifier, NppRectificationDefault) auto rectifier = make_npp_rectifier(); rectifier->register_postprocess(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) @@ -39,7 +40,8 @@ TEST_F(TestRectifier, NppRectificationLowAlpha) } EXPECT_EQ(rectifier->parameter_value("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) @@ -53,7 +55,8 @@ TEST_F(TestRectifier, NppRectificationHighAlpha) } EXPECT_EQ(rectifier->parameter_value("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 diff --git a/src/accelerated_image_processor_pipeline/test/opencv_cuda_rectifier.cpp b/src/accelerated_image_processor_pipeline/test/opencv_cuda_rectifier.cpp index e43722a..a9e9d4d 100644 --- a/src/accelerated_image_processor_pipeline/test/opencv_cuda_rectifier.cpp +++ b/src/accelerated_image_processor_pipeline/test/opencv_cuda_rectifier.cpp @@ -25,7 +25,8 @@ TEST_F(TestRectifier, OpenCvCudaRectificationDefault) auto rectifier = make_opencv_cuda_rectifier(); rectifier->register_postprocess(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) @@ -39,7 +40,8 @@ TEST_F(TestRectifier, OpenCvCudaRectificationLowAlpha) } EXPECT_EQ(rectifier->parameter_value("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) @@ -53,7 +55,8 @@ TEST_F(TestRectifier, OpenCvCudaRectificationHighAlpha) } EXPECT_EQ(rectifier->parameter_value("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