// Copyright (c) 2012-2017 VideoStitch SAS // Copyright (c) 2018 stitchEm #pragma once #include "core/coordinates.hpp" #include "libvideostitch/parse.hpp" #include "libvideostitch/controlPointListDef.hpp" namespace VideoStitch { namespace EpipolarCurves { /** * @brief Configuration used by the EpipolarCurvesAlgorithm */ class VS_EXPORT EpipolarCurvesConfig { public: explicit EpipolarCurvesConfig(const Ptv::Value* config); ~EpipolarCurvesConfig() = default; EpipolarCurvesConfig(const EpipolarCurvesConfig&); bool isValid() const { return isConfigValid; } bool getIsAutoPointMatching() const { return autoPointMatching; } double getDecimationCellFactor() const { return decimationCellFactor; } double getSphericalGridRadius() const { return sphericalGridRadius; } double getImageMaxOutputDepth() const { return imageMaxOutputDepth; } std::vector<frameid_t> getFrames() const { return frames; } std::map<videoreaderid_t, std::vector<Core::TopLeftCoords2>> getSinglePointsMap() const { return singlePointsMap; } std::map<std::pair<videoreaderid_t, videoreaderid_t>, Core::ControlPointList> getMatchedPointsMap() const { return matchedPointsMap; } private: bool isConfigValid; /* Auto selection of matched points */ bool autoPointMatching; double decimationCellFactor; double sphericalGridRadius; double imageMaxOutputDepth; /* List of frames */ std::vector<frameid_t> frames; /* List of points to show in input pictures */ std::map<videoreaderid_t, std::vector<Core::TopLeftCoords2>> singlePointsMap; /* List of matched points to show in input pictures */ std::map<std::pair<videoreaderid_t, videoreaderid_t>, Core::ControlPointList> matchedPointsMap; }; } // namespace EpipolarCurves } // namespace VideoStitch