Added StereoVideo source input (side-by-side video)

This commit is contained in:
matlabbe
2015-07-16 14:44:25 -04:00
parent 6872b16550
commit 8754da7420
8 changed files with 485 additions and 58 deletions
@@ -80,6 +80,7 @@ public:
const cv::Mat & R() const {return R_;} //rectification matrix
const cv::Mat & P() const {return P_;} //projection matrix
void setLocalTransform(const Transform & transform) {localTransform_ = transform;}
const Transform & localTransform() const {return localTransform_;}
const cv::Size & imageSize() const {return imageSize_;}
@@ -157,6 +158,8 @@ public:
void scale(double scale);
void setLocalTransform(const Transform & transform) {left_.setLocalTransform(transform);}
const Transform & localTransform() const {return left_.localTransform();}
Transform stereoTransform() const;
const CameraModel & left() const {return left_;}
+7
View File
@@ -52,6 +52,7 @@ public:
CameraImages(const std::string & path,
int startAt = 1,
bool refreshDir = false,
bool rectifyImages = false,
float imageRate = 0,
const Transform & localTransform = Transform::getIdentity());
virtual ~CameraImages();
@@ -71,9 +72,13 @@ private:
// If the list of files in the directory is refreshed
// on each call of takeImage()
bool _refreshDir;
bool _rectifyImages;
int _count;
UDirectory * _dir;
std::string _lastFileName;
std::string _cameraName;
CameraModel _model;
};
@@ -93,6 +98,7 @@ public:
float imageRate = 0,
const Transform & localTransform = Transform::getIdentity());
CameraVideo(const std::string & filePath,
bool rectifyImages = false,
float imageRate = 0,
const Transform & localTransform = Transform::getIdentity());
virtual ~CameraVideo();
@@ -109,6 +115,7 @@ protected:
private:
// File type
std::string _filePath;
bool _rectifyImages;
cv::VideoCapture _capture;
Source _src;
@@ -107,6 +107,7 @@ public:
CameraStereoImages(
const std::string & path,
const std::string & timestampsPath = "", // "times.txt"
bool rectifyImages = false,
float imageRate=0.0f,
const Transform & localTransform = Transform::getIdentity());
virtual ~CameraStereoImages();
@@ -122,9 +123,44 @@ private:
CameraImages * camera_;
CameraImages * camera2_;
std::string timestampsPath_;
bool rectifyImages_;
std::list<double> stamps_;
StereoCameraModel stereoModel_;
std::string cameraName_;
};
/////////////////////////
// CameraStereoVideo
/////////////////////////
class CameraImages;
class RTABMAP_EXP CameraStereoVideo :
public Camera
{
public:
static bool available();
public:
CameraStereoVideo(
const std::string & path,
bool rectifyImages = false,
float imageRate=0.0f,
const Transform & localTransform = Transform::getIdentity());
virtual ~CameraStereoVideo();
virtual bool init(const std::string & calibrationFolder = ".", const std::string & cameraName = "");
virtual bool isCalibrated() const;
virtual std::string getSerial() const;
protected:
virtual SensorData captureImage();
private:
cv::VideoCapture capture_;
std::string path_;
bool rectifyImages_;
StereoCameraModel stereoModel_;
std::string cameraName_;
};
} // namespace rtabmap