Skip to content
Snippets Groups Projects
stereovideo.hpp 1003 B
Newer Older
Nicolas Pope's avatar
Nicolas Pope committed
#pragma once
#ifndef _FTL_RGBD_STEREOVIDEO_HPP_
#define _FTL_RGBD_STEREOVIDEO_HPP_

#include <ftl/rgbd/source.hpp>
Nicolas Pope's avatar
Nicolas Pope committed
#include <string>

namespace ftl {

namespace rgbd {
namespace detail {

Nicolas Pope's avatar
Nicolas Pope committed
class LocalSource;
class Calibrate;
class Disparity;

/**
 * RGBD source from either a stereo video file with left + right images, or
 * direct from two camera devices. A variety of algorithms are included for
 * calculating disparity, before converting to depth.  Calibration of the images
 * is also performed.
 */
class StereoVideoSource : public detail::Source {
Nicolas Pope's avatar
Nicolas Pope committed
	public:
	explicit StereoVideoSource(ftl::rgbd::Source*);
	StereoVideoSource(ftl::rgbd::Source*, const std::string &);
Nicolas Pope's avatar
Nicolas Pope committed
	~StereoVideoSource();

	bool grab();
Nicolas Pope's avatar
Nicolas Pope committed
	bool isReady();

	//const cv::Mat &getRight() const { return right_; }
Nicolas Pope's avatar
Nicolas Pope committed

	private:
	LocalSource *lsrc_;
	Calibrate *calib_;
	Disparity *disp_;
Nicolas Pope's avatar
Nicolas Pope committed
	bool ready_;
	cv::Mat left_;
	cv::Mat right_;
	cv::Mat mask_l_;
Nicolas Pope's avatar
Nicolas Pope committed

	void init(const std::string &);
Nicolas Pope's avatar
Nicolas Pope committed
};

Nicolas Pope's avatar
Nicolas Pope committed
}
}

#endif  // _FTL_RGBD_STEREOVIDEO_HPP_