MYNT EYE D SDK  1.7.1
http://www.myntai.com/mynteye/depth
camera.h
1 // Copyright 2018 Slightech Co., Ltd. All rights reserved.
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 #ifndef MYNTEYE_CAMERA_H_
15 #define MYNTEYE_CAMERA_H_
16 #pragma once
17 
18 #include <cstdint>
19 #include <functional>
20 #include <limits>
21 #include <memory>
22 #include <vector>
23 #include <string>
24 
25 #include "mynteyed/device/device_info.h"
26 #include "mynteyed/device/image.h"
27 #include "mynteyed/device/open_params.h"
28 #include "mynteyed/device/stream_info.h"
29 #include "mynteyed/types.h"
30 
31 MYNTEYE_BEGIN_NAMESPACE
32 
33 class CameraPrivate;
34 
35 class MYNTEYE_API Camera {
36  public:
37  using img_info_callback_t =
38  std::function<void(const std::shared_ptr<ImgInfo>& info)>;
39  using stream_callback_t = std::function<void(const StreamData& data)>;
40  using motion_callback_t = std::function<void(const MotionData& data)>;
41 
42  Camera();
43  ~Camera();
44 
46  std::vector<DeviceInfo> GetDeviceInfos() const;
48  void GetDeviceInfos(std::vector<DeviceInfo>* dev_infos) const;
49 
51  void GetStreamInfos(const std::int32_t& dev_index,
52  std::vector<StreamInfo>* color_infos,
53  std::vector<StreamInfo>* depth_infos) const;
54 
56  ErrorCode Open();
58  ErrorCode Open(const OpenParams& params);
59 
61  bool IsOpened() const;
62 
64  std::shared_ptr<device::Descriptors> GetDescriptors() const;
66  std::string GetDescriptor(const Descriptor &desc) const;
67 
69  StreamIntrinsics GetStreamIntrinsics(const StreamMode& stream_mode) const {
70  bool ok = true;
71  return GetStreamIntrinsics(stream_mode, &ok);
72  }
74  StreamIntrinsics GetStreamIntrinsics(const StreamMode& stream_mode,
75  bool* ok) const;
77  StreamExtrinsics GetStreamExtrinsics(const StreamMode& stream_mode) const {
78  bool ok = true;
79  return GetStreamExtrinsics(stream_mode, &ok);
80  }
82  StreamExtrinsics GetStreamExtrinsics(const StreamMode& stream_mode,
83  bool* ok) const;
84 
86  bool WriteCameraCalibrationBinFile(const std::string& filename);
87 
90  bool ok = true;
91  return GetMotionIntrinsics(&ok);
92  }
94  MotionIntrinsics GetMotionIntrinsics(bool* ok) const;
97  bool ok = true;
98  return GetMotionExtrinsics(&ok);
99  }
101  MotionExtrinsics GetMotionExtrinsics(bool* ok) const;
102 
104  bool IsWriteDeviceSupported() const;
106  bool WriteDeviceFlash(
107  device::Descriptors *desc,
108  device::ImuParams *imu_params,
109  Version *spec_version = nullptr);
110 
112  void EnableProcessMode(const ProcessMode& mode);
114  void EnableProcessMode(const std::int32_t& mode);
115 
117  bool IsImageInfoSupported() const;
124  void EnableImageInfo(bool sync);
126  void DisableImageInfo();
128  bool IsImageInfoEnabled() const;
130  bool IsImageInfoSynced() const;
131 
133  bool IsStreamDataEnabled(const ImageType& type) const;
135  bool HasStreamDataEnabled() const;
136 
138  StreamData GetStreamData(const ImageType& type);
140  std::vector<StreamData> GetStreamDatas(const ImageType& type);
141 
143  bool IsMotionDatasSupported() const;
152  void EnableMotionDatas(
153  std::size_t max_size = std::numeric_limits<std::size_t>::max());
155  void DisableMotionDatas();
157  bool IsMotionDatasEnabled() const;
158 
160  std::vector<MotionData> GetMotionDatas();
161 
163  void SetImgInfoCallback(img_info_callback_t callback, bool async = true);
164 
166  void SetStreamCallback(const ImageType& type, stream_callback_t callback,
167  bool async = true);
168 
170  void SetMotionCallback(motion_callback_t callback, bool async = true);
171 
173  void Close();
174 
176  bool HidFirmwareUpdate(const char* filepath);
177 
181  void SetExposureTime(const float &value);
185  void GetExposureTime(float &value);
186 
190  void SetGlobalGain(const float &value);
194  void GetGlobalGain(float &value);
195 
197  void SetIRIntensity(const std::uint16_t &value);
198 
200  bool AutoExposureControl(bool enable);
201 
203  bool AutoWhiteBalanceControl(bool enable);
204 
205 #ifdef MYNTEYE_DEPRECATED_COMPAT
206 
207  void EnableStreamData(const ImageType& type);
209  void DisableStreamData(const ImageType& type);
210 #endif
211 
212  private:
213  std::unique_ptr<CameraPrivate> p_;
214 };
215 
216 MYNTEYE_END_NAMESPACE
217 
218 #endif // MYNTEYE_CAMERA_H_
Version.
Definition: types_data.h:153
MotionExtrinsics GetMotionExtrinsics() const
Get the extrinsics from left to motion.
Definition: camera.h:96
Extrinsics, represent how the different datas are connected.
Definition: types_calib.h:119
MotionIntrinsics GetMotionIntrinsics() const
Get the intrinsics of motion.
Definition: camera.h:89
Device descriptors.
Definition: types_data.h:242
Definition: camera.h:35
Stream data.
Definition: types_data.h:110
Device imu paramters.
Definition: types_data.h:258
Device open parameters.
Definition: open_params.h:28
Motion intrinsics, including accelerometer and gyroscope.
Definition: types_calib.h:107
StreamIntrinsics GetStreamIntrinsics(const StreamMode &stream_mode) const
Get the intrinsics of camera.
Definition: camera.h:69
StreamExtrinsics GetStreamExtrinsics(const StreamMode &stream_mode) const
Get the extrinsics of camera.
Definition: camera.h:77
Camera intrinsics: size, coeffs and camera matrix.
Definition: types_calib.h:57