diff --git a/unit_tests/Test_Stimulus.cpp b/unit_tests/Test_Stimulus.cpp index 7ad5613cdaece960c08ee2d4915bf1f97b6d65f5..bdfe453fe0ce606d1b895e998b408f0f9adf7274 100644 --- a/unit_tests/Test_Stimulus.cpp +++ b/unit_tests/Test_Stimulus.cpp @@ -19,17 +19,37 @@ #include "aidge/backend/opencv/data/TensorImpl.hpp" #include "aidge/data/Tensor.hpp" +#include "Tools.hpp" using namespace Aidge; TEST_CASE("Stimulus creation", "[Stimulus][OpenCV]") { SECTION("Instanciation & load an image") { - // Load image with imread - cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", cv::IMREAD_UNCHANGED); - REQUIRE(true_mat.empty()==false); + // // Load image with imread + // cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", cv::IMREAD_UNCHANGED); + // REQUIRE(true_mat.empty()==false); + + // // Create Stimulus + // Stimulus stimg("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", true); + // stimg.setBackend("opencv"); + + // Generate random matrix and save it + std::vector<cv::Mat> channels; + cv::Mat true_mat; + + for (int c = 0; c < 3; ++c){ + // Create a random matrix + cv::Mat randomMat = createRandomMat<unsigned char>(224, 224); + // Add each random matrix to the vector + channels.push_back(randomMat); + } + // Merge the vector of cv mat into one cv mat + cv::merge(channels, true_mat); + + cv::imwrite("output_image.png", true_mat); // Create Stimulus - Stimulus stimg("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", true); + Stimulus stimg("output_image.png", true); stimg.setBackend("opencv"); // Load the image in a tensor & save it in memory diff --git a/unit_tests/Test_StimulusImpl_opencv_imread.cpp b/unit_tests/Test_StimulusImpl_opencv_imread.cpp index d84e65ee8a32d06067428ba76eb5eb0aaccb0296..b3b2b1999e39ab9512597ae932b72679029adc4d 100644 --- a/unit_tests/Test_StimulusImpl_opencv_imread.cpp +++ b/unit_tests/Test_StimulusImpl_opencv_imread.cpp @@ -19,19 +19,41 @@ #include "aidge/backend/opencv/data/TensorImpl.hpp" #include "aidge/data/Tensor.hpp" +#include "Tools.hpp" using namespace Aidge; TEST_CASE("StimulusImpl_opencv_imread creation", "[StimulusImpl_opencv_imread][OpenCV]") { SECTION("Instanciation & load an image") { - // Load image with imread - // cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/Lenna.png"); - cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", cv::IMREAD_UNCHANGED); - REQUIRE(true_mat.empty()==false); - - // Create StimulusImpl_opencv_imread - // StimulusImpl_opencv_imread stImpl("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/Lenna.png"); - StimulusImpl_opencv_imread stImpl("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm"); + // // Load image with imread + // // cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/Lenna.png"); + // cv::Mat true_mat = cv::imread("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm", cv::IMREAD_UNCHANGED); + // REQUIRE(true_mat.empty()==false); + + // // Create StimulusImpl_opencv_imread + // // StimulusImpl_opencv_imread stImpl("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/Lenna.png"); + // StimulusImpl_opencv_imread stImpl("/data1/is156025/tb256203/dev/eclipse_aidge/aidge/user_tests/train-images-idx3-ubyte[00001].pgm"); + + // Generate random matrix and save it + std::vector<cv::Mat> channels; + cv::Mat true_mat; + + for (int c = 0; c < 3; ++c){ + // Create a random matrix + cv::Mat randomMat = createRandomMat<unsigned char>(224, 224); + // Add each random matrix to the vector + channels.push_back(randomMat); + } + // Merge the vector of cv mat into one cv mat + cv::merge(channels, true_mat); + + // Save image into a png file + cv::imwrite("output_image_stimpl.png", true_mat); + + // Instanciate timulusImpl_opencv_imread + StimulusImpl_opencv_imread stImpl("output_image_stimpl.png"); + + // Load the image as a tensor std::shared_ptr<Tensor> tensor_load; tensor_load = stImpl.load(); diff --git a/unit_tests/Tests_Utils.cpp b/unit_tests/Tests_Utils.cpp index bd01df9b9f51c53e68135c554ab3497d3e5a19c1..91cd54f67cf0c96f977b5b87e92214faee7de2e4 100644 --- a/unit_tests/Tests_Utils.cpp +++ b/unit_tests/Tests_Utils.cpp @@ -21,18 +21,10 @@ #include "aidge/backend/opencv/data/TensorImpl.hpp" #include "aidge/backend/cpu/data/TensorImpl.hpp" +#include "Tools.hpp" using namespace Aidge; -template <typename T> -cv::Mat createRandomMat(int rows, int cols) { - cv::Mat randomMat(rows, cols, cv::DataType<T>::type); - - cv::randu(randomMat, cv::Scalar::all(0), cv::Scalar::all(255)); - - return randomMat; -} - // TEMPLATE_TEST_CASE("Opencv Utils", "[Utils][OpenCV]", char, unsigned char, short, unsigned short, int, float, double) { // TODO : perform test for char and double TEMPLATE_TEST_CASE("Opencv Utils", "[Utils][OpenCV]", signed char, unsigned char, short, unsigned short, int, float, double) { diff --git a/unit_tests/Tools.hpp b/unit_tests/Tools.hpp new file mode 100644 index 0000000000000000000000000000000000000000..0ade0c54c11ca35ce52fbe26491e77af80fa31c4 --- /dev/null +++ b/unit_tests/Tools.hpp @@ -0,0 +1,26 @@ +/******************************************************************************** + * Copyright (c) 2023 CEA-List + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License 2.0 which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * SPDX-License-Identifier: EPL-2.0 + * + ********************************************************************************/ + +#ifndef AIDGE_OPENCV_TOOLS_H_ +#define AIDGE_OPENCV_TOOLS_H_ + +#include "opencv2/core.hpp" + +template <typename T> +cv::Mat createRandomMat(int rows, int cols) { + cv::Mat randomMat(rows, cols, cv::DataType<T>::type); + + cv::randu(randomMat, cv::Scalar::all(0), cv::Scalar::all(255)); + + return randomMat; +} + +#endif // AIDGE_OPENCV_TESTS_UTILS_H_ \ No newline at end of file