/** * Copyright 2020 Huawei Technologies Co., Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef TESTS_DATASET_UT_CORE_COMMON_DE_UT_BBOXOP_COMMON_H_ #define TESTS_DATASET_UT_CORE_COMMON_DE_UT_BBOXOP_COMMON_H_ #include "cvop_common.h" #include "minddata/dataset/util/path.h" namespace UT { namespace CVOP { namespace BBOXOP { class BBoxOpCommon : public CVOpCommon { public: enum FileType { kExpected, kActual }; BBoxOpCommon(); ~BBoxOpCommon(); /// \brief Sets up the class's variable, images_and_annotations void SetUp() override; /// \brief Get all images and annotations in images_and_annotations TensorTable from dir /// \param[in] dir directory containing images and annotation folders /// \param[in] num_of_samples number of rows to fetch (default = 1) void GetInputImagesAndAnnotations(const std::string &dir, std::size_t num_of_samples = 1); /// \brief Save the given tensor table /// \param[in] type type of images to be stored (e.g. Expected or Actual) /// \param[in] op_name name of op being tested /// \param[in] table rows of images and corresponding annotations void SaveImagesWithAnnotations(FileType type, const std::string &op_name, const TensorTable &table); /// \brief Compare actual and expected results. The images will have the bounding boxes on them /// Log if images don't match /// \param[in] op_name name of op being tested void CompareActualAndExpected(const std::string &op_name); /// \brief Load BBox data from an XML file into a Tensor /// \param[in] path path to XML bbox data file /// \param[in, out] target_BBox pointer to a Tensor to load /// \return True if file loaded successfully, false if error -> logged to STD out bool LoadAnnotationFile(const std::string &path, std::shared_ptr *target_BBox); TensorTable images_and_annotations_; private: // directory of image_folder when the dataset/data gets transferred to build std::string image_folder_build_; // directory of image_folder in the source project (used to store expected results) std::string image_folder_src_; }; } // namespace BBOXOP } // namespace CVOP } // namespace UT #endif // TESTS_DATASET_UT_CORE_COMMON_DE_UT_BBOXOP_COMMON_H_