feat(calib models): prepare to abstract the process order by calib model
This commit is contained in:
parent
7a556143aa
commit
6e3afaec29
|
@ -93,7 +93,7 @@ class MYNTEYE_API API {
|
|||
/** The api::MotionData callback. */
|
||||
using motion_callback_t = std::function<void(const api::MotionData &data)>;
|
||||
|
||||
explicit API(std::shared_ptr<Device> device);
|
||||
explicit API(std::shared_ptr<Device> device, CalibrationModel calib_model);
|
||||
virtual ~API();
|
||||
|
||||
/**
|
||||
|
|
|
@ -207,10 +207,11 @@ std::vector<std::string> get_plugin_paths() {
|
|||
|
||||
} // namespace
|
||||
|
||||
API::API(std::shared_ptr<Device> device) : device_(device) {
|
||||
API::API(std::shared_ptr<Device> device, CalibrationModel calib_model)
|
||||
: device_(device) {
|
||||
VLOG(2) << __func__;
|
||||
// std::dynamic_pointer_cast<StandardDevice>(device_);
|
||||
synthetic_.reset(new Synthetic(this));
|
||||
synthetic_.reset(new Synthetic(this, calib_model));
|
||||
}
|
||||
|
||||
API::~API() {
|
||||
|
@ -230,7 +231,15 @@ std::shared_ptr<API> API::Create(
|
|||
}
|
||||
|
||||
std::shared_ptr<API> API::Create(const std::shared_ptr<Device> &device) {
|
||||
return std::make_shared<API>(device);
|
||||
auto left_intr = device -> GetIntrinsics(Stream::LEFT);
|
||||
auto right_intr = device -> GetIntrinsics(Stream::RIGHT);
|
||||
if (left_intr->calib_model() != right_intr->calib_model()) {
|
||||
VLOG(2) << __func__
|
||||
<< "ERROR: "
|
||||
<<"left camera and right camera use different calib models!";
|
||||
}
|
||||
auto api = std::make_shared<API>(device, left_intr->calib_model());
|
||||
return api;
|
||||
}
|
||||
|
||||
Model API::GetModel() const {
|
||||
|
|
|
@ -24,6 +24,13 @@
|
|||
|
||||
#ifdef WITH_CAM_MODELS
|
||||
|
||||
#include <camodocal/camera_models/Camera.h>
|
||||
#include <camodocal/camera_models/CameraFactory.h>
|
||||
#include <camodocal/camera_models/CataCamera.h>
|
||||
#include <camodocal/camera_models/EquidistantCamera.h>
|
||||
#include <camodocal/camera_models/PinholeCamera.h>
|
||||
#include <camodocal/gpl/gpl.h>
|
||||
#include <camodocal/camera_models/Camera.h>
|
||||
#include <boost/algorithm/string.hpp>
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/program_options.hpp>
|
||||
|
|
|
@ -22,15 +22,6 @@
|
|||
|
||||
#include "mynteye/types.h"
|
||||
#include "mynteye/api/processor.h"
|
||||
#ifdef WITH_CAM_MODELS
|
||||
#include <camodocal/camera_models/Camera.h>
|
||||
#include <camodocal/camera_models/CameraFactory.h>
|
||||
#include <camodocal/camera_models/CataCamera.h>
|
||||
#include <camodocal/camera_models/EquidistantCamera.h>
|
||||
#include <camodocal/camera_models/PinholeCamera.h>
|
||||
#include <camodocal/gpl/gpl.h>
|
||||
#include <camodocal/camera_models/Camera.h>
|
||||
#endif
|
||||
|
||||
MYNTEYE_BEGIN_NAMESPACE
|
||||
|
||||
|
|
|
@ -68,7 +68,8 @@ void process_childs(
|
|||
|
||||
} // namespace
|
||||
|
||||
Synthetic::Synthetic(API *api) : api_(api), plugin_(nullptr) {
|
||||
Synthetic::Synthetic(API *api, CalibrationModel calib_model)
|
||||
: api_(api), plugin_(nullptr), calib_model_(calib_model) {
|
||||
VLOG(2) << __func__;
|
||||
CHECK_NOTNULL(api_);
|
||||
InitStreamSupports();
|
||||
|
@ -442,10 +443,21 @@ void Synthetic::InitProcessors() {
|
|||
depth_processor->SetPostProcessCallback(
|
||||
std::bind(&Synthetic::OnDepthPostProcess, this, _1));
|
||||
|
||||
rectify_processor->AddChild(disparity_processor);
|
||||
disparity_processor->AddChild(disparitynormalized_processor);
|
||||
disparity_processor->AddChild(points_processor);
|
||||
points_processor->AddChild(depth_processor);
|
||||
if (calib_model_ == CalibrationModel::PINHOLE) {
|
||||
// PINHOLE
|
||||
rectify_processor->AddChild(disparity_processor);
|
||||
disparity_processor->AddChild(disparitynormalized_processor);
|
||||
disparity_processor->AddChild(points_processor);
|
||||
points_processor->AddChild(depth_processor);
|
||||
} else if (calib_model_ == CalibrationModel::KANNALA_BRANDT) {
|
||||
// KANNALA_BRANDT
|
||||
rectify_processor->AddChild(disparity_processor);
|
||||
disparity_processor->AddChild(disparitynormalized_processor);
|
||||
disparity_processor->AddChild(points_processor);
|
||||
points_processor->AddChild(depth_processor);
|
||||
} else {
|
||||
// UNKNOW
|
||||
}
|
||||
|
||||
processor_ = rectify_processor;
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include <vector>
|
||||
|
||||
#include "mynteye/api/api.h"
|
||||
// #include ""
|
||||
|
||||
MYNTEYE_BEGIN_NAMESPACE
|
||||
|
||||
|
@ -40,7 +41,7 @@ class Synthetic {
|
|||
MODE_LAST // Unsupported
|
||||
} mode_t;
|
||||
|
||||
explicit Synthetic(API *api);
|
||||
explicit Synthetic(API *api, CalibrationModel calib_model);
|
||||
~Synthetic();
|
||||
|
||||
void NotifyImageParamsChanged();
|
||||
|
@ -112,6 +113,8 @@ class Synthetic {
|
|||
std::shared_ptr<Processor> processor_;
|
||||
|
||||
std::shared_ptr<Plugin> plugin_;
|
||||
|
||||
CalibrationModel calib_model_;
|
||||
};
|
||||
|
||||
template <class T, class P>
|
||||
|
|
Loading…
Reference in New Issue
Block a user