1 #ifndef NUITRACK_DEPTHSENSOR_H_
2 #define NUITRACK_DEPTHSENSOR_H_
6 #include "nuitrack/modules/HeaderOnlyAPI_Module.h"
7 #include "nuitrack/ModuleFunctions.h"
8 #include "nuitrack/types/Export.h"
9 #include "nuitrack/utils/ExceptionTranslator.h"
10 #include "nuitrack/types/DepthFrame.h"
11 #include "nuitrack/types/Vector3.h"
12 #include "nuitrack/types/OutputMode.h"
13 #include "nuitrack/capi/Nuitrack_CAPI.h"
14 #include "nuitrack/capi/DepthSensor_CAPI.h"
15 #include "nuitrack/utils/CallbackStruct.h"
45 typedef std::shared_ptr<DepthSensor>
Ptr;
53 typedef std::function<void (DepthFrame::Ptr)>
OnNewFrame;
64 NuitrackModule* pimpl = NULL;
65 ExceptionType exception_code = nuitrack_CreateDepthSensor(&pimpl);
66 char exception_message[1024];
67 nuitrack_GetExceptionMessage(pimpl, exception_message, 1024);
68 ExceptionTranslator::generateExceptionByErrorCode(exception_code, exception_message);
69 return std::shared_ptr<DepthSensor>(
new DepthSensor(pimpl));
77 _callbackStruct =
new CallbackStruct<DepthFrame::Ptr>();
78 _callbackWrapper.setDepthSensor(
this);
79 _callbackWrapper.setFunctionAddress(&onNewFrameCallback);
80 nuitrack_registerDepthSensorCallback(_pimpl, &_callbackWrapper);
85 nuitrack_DestroyDepthSensor(_pimpl);
87 delete _callbackStruct;
96 nuitrack_GetDepthSensorOutputMode(_pimpl, &mode);
106 return nuitrack_IsDepthSensorMirror(_pimpl);
123 nuitrack_SetDepthSensorMirror(_pimpl, mirror);
135 return _callbackStruct->addCallback(callback);
147 _callbackStruct->deleteCallback(handler);
156 DepthSensorDataPtr data = nuitrack_GetDepthSensorData(_pimpl);
157 DepthFrame::Ptr newFrame = DepthFrame::Ptr(
new DepthFrame(data));
168 return nuitrack_ConvertProjToRealCoordsVector3(_pimpl, p);
179 return nuitrack_ConvertProjToRealCoordsXYZ(_pimpl, x, y, depth);
189 return nuitrack_ConvertRealToProjCoordsVector3(_pimpl, p);
199 return nuitrack_ConvertRealToProjCoordsXYZ(_pimpl, x, y, z);
202 bool canUpdate()
const
204 return nuitrack_GetNuitrackModuleCanUpdate(_pimpl);
215 return nuitrack_GetNuitrackModuleTimestamp(_pimpl);
220 static void onNewFrameCallback(DepthSensorData* depthFrameImpl,
DepthSensor* sensor)
222 DepthFrame::Ptr newFrame = DepthFrame::Ptr(
new DepthFrame(depthFrameImpl));
223 sensor->_callbackStruct->executeAllCallbacks(newFrame);
226 NuitrackModule* _pimpl;
228 DepthSensorCallbackWrapper _callbackWrapper;
230 CallbackStruct<DepthFrame::Ptr>* _callbackStruct;
Exception タイプ
Nuitrack 内部関数の考え得るエラーコードです。
定義:Error.h:20
void disconnectOnNewFrame(uint64_t handler)
新しい深度フレーム リクエストに関するコールバックを削除します。
定義:DepthSensor.h:145
void setMirror(bool mirror)
ミラー モードの状態を設定します。
定義:DepthSensor.h:121
static DepthSensor::Ptr create()
DepthSensor モジュール オブジェクトを作成します。
定義:DepthSensor.h:62
std::function< void(DepthFrame::Ptr)> OnNewFrame
新しい深度フレームリクエストのコールバック タイプ。
定義:DepthSensor.h:53
virtual uint64_t getTimestamp()
マイクロ秒で表示される、最後に処理したデータのタイムスタンプを戻します。
定義:DepthSensor.h:213
フレームの深度マップを保存します。
定義:DepthFrame.h:15
Vector3 convertProjToRealCoords(const Vector3 &p) const
射影座標を Vector3 ポイントから実際の座標に変換します。
定義:DepthSensor.h:166
センサー データ プロパティを保存します。
定義:OutputMode.h:13
インターフェイスに Nuitrack 深度センサー モジュールの可能性を表します。...
定義:DepthSensor.h:37
std::shared_ptr< DepthSensor > Ptr
DepthSensor インスタンスにアクセスするためのスマート ポインター。
定義:DepthSensor.h:45
bool isMirror() const
ミラー モードが有効な場合には true、その他の場合には false となります。
定義:DepthSensor.h:104
DepthFrame::Ptr getDepthFrame()
利用可能な最後の DepthFrame に対してスマート ポインターを戻します。
定義:DepthSensor.h:154
uint64_t connectOnNewFrame(const OnNewFrame &callback)
新しい深度フレーム リクエストに関するコールバックを追加します。
定義:DepthSensor.h:133
DepthSensor(NuitrackModule *pimpl)
定義:DepthSensor.h:73
virtual Vector3 convertRealToProjCoords(const Vector3 &p) const
実際の座標を Vector3 ポイントから射影座標に変換します。
定義:DepthSensor.h:187
virtual Vector3 convertRealToProjCoords(float x, float y, float z) const
実際の座標 x, y, z を射影座標に変換します。
定義:DepthSensor.h:197
virtual Vector3 convertProjToRealCoords(size_t x, size_t y, DepthFrame::DataType depth) const
射影座標を x,y と深度マップから実際の座標に変換します。...
定義:DepthSensor.h:177
const OutputMode getOutputMode() const
深度センサーから出力モードを戻します。
定義:DepthSensor.h:93