XRPrimer (C++ API)  0.6.0
camera.h
Go to the documentation of this file.
1 // Copyright (c) OpenXRLab. All rights reserved.
2 
3 #pragma once
4 
5 #include <Eigen/Core>
6 
7 #include <string>
8 #include <vector>
9 
11 #include <xrprimer_export.h>
12 
16 class XRPRIMER_EXPORT BaseCameraParameter {
17  public:
18  virtual ~BaseCameraParameter() = default;
19 
21  : BaseCameraParameter(Eigen::Matrix4f::Zero(),
22  Eigen::Matrix3f::Identity(),
23  Eigen::Vector3f::Zero()) {}
24 
25  BaseCameraParameter(const std::string &name, int width, int height,
26  bool world2cam, const Eigen::Matrix4f &intrinsic,
27  const Eigen::Matrix3f &extrinsic_r,
28  const Eigen::Vector3f &extrinsic_t,
29  const std::string &convention)
30  : name_(name), width_(width), height_(height), world2cam_(world2cam),
31  intrinsic_(intrinsic), extrinsic_r_(extrinsic_r),
32  extrinsic_t_(extrinsic_t), convention_(convention) {}
33 
34  BaseCameraParameter(const Eigen::Matrix4f &intrinsic,
35  const Eigen::Matrix3f &extrinsic_r,
36  const Eigen::Vector3f &extrinsic_t)
37  : BaseCameraParameter("default", 1920, 1080, true, intrinsic,
38  extrinsic_r, extrinsic_t, "opencv") {}
39 
40  void set_intrinsic(int width, int height, double fx, double fy, double cx,
41  double cy, bool perspective = true);
42  void set_intrinsic(const Eigen::Matrix3f &mat, bool perspective = true);
43  Eigen::Matrix3f intrinsic33() const;
44 
45  //
46  // interface
47  //
48  virtual std::string ClassName() const = 0;
49  virtual bool SaveFile(const std::string &filename) const = 0;
50  virtual bool LoadFile(const std::string &filename) = 0;
51 
52  //
53  // properties
54  //
55  std::string name_;
56  Eigen::Matrix4f intrinsic_;
57  Eigen::Matrix3f extrinsic_r_;
58  Eigen::Vector3f extrinsic_t_;
59  int width_;
60  int height_;
61  bool world2cam_;
62  std::string convention_; // opencv or other
63 
64  private:
65  bool IsPerspective() const;
66 };
BaseCameraParameter(const Eigen::Matrix4f &intrinsic, const Eigen::Matrix3f &extrinsic_r, const Eigen::Vector3f &extrinsic_t)
Definition: camera.h:34
BaseCameraParameter()
Definition: camera.h:20
Eigen::Matrix4f intrinsic_
Definition: camera.h:56
std::string name_
Definition: camera.h:55
std::string convention_
Definition: camera.h:62
Eigen::Matrix3f extrinsic_r_
Definition: camera.h:57
Contains the base camera parameter.
Definition: camera.h:16
BaseCameraParameter(const std::string &name, int width, int height, bool world2cam, const Eigen::Matrix4f &intrinsic, const Eigen::Matrix3f &extrinsic_r, const Eigen::Vector3f &extrinsic_t, const std::string &convention)
Definition: camera.h:25
bool world2cam_
Definition: camera.h:61
int height_
Definition: camera.h:60
int width_
Definition: camera.h:59
Eigen::Vector3f extrinsic_t_
Definition: camera.h:58