Program Listing for File ImageSet.h¶
↰ Return to documentation for file (lib/DataStructures/ImageSet.h)
#pragma once
#include <opencv2/core.hpp>
#include <vector>
#include "DataStructures/Frame.h"
#include "util/SophusUtil.h"
#include <libvideoio/Camera.h>
namespace lsd_slam {
// Relies on the lazy-initialize nature of Frame to be efficient
class ImageSet {
public:
ImageSet() = delete;
ImageSet(const ImageSet &) = delete;
ImageSet(unsigned int id, const cv::Mat &img, const libvideoio::Camera &cam);
ImageSet(unsigned int id, const cv::Mat &imgL, const cv::Mat &imgR,
const libvideoio::Camera &camL, const libvideoio::Camera &camR,
const unsigned int ref);
~ImageSet();
Frame::SharedPtr &refFrame() { return _frames[_refFrame]; }
Frame::SharedPtr &getFrame(const unsigned int frameNum) { return _frames[frameNum]; }
void pushbackFrame(const cv::Mat &img, const libvideoio::Camera &cam);
Sim3 getRefTransformation() { return _frames[_refFrame]->getCamToWorld(); }
void setReferenceFrame(const unsigned int &frameNum) { _refFrame = frameNum; }
unsigned int id() { return _frameId; }
typedef std::shared_ptr<ImageSet> SharedPtr;
private:
unsigned int _refFrame;
unsigned int _frameId;
std::vector<Frame::SharedPtr> _frames;
std::vector<Sophus::SE3d> _se3FromFirst;
};
} // namespace lsd_slam