1 /*---------------------------------------------------------------------------* 2 Project: Horizon 3 File: camera_Api.h 4 5 Copyright (C)2009 Nintendo Co., Ltd. All rights reserved. 6 7 These coded instructions, statements, and computer programs contain 8 proprietary information of Nintendo of America Inc. and/or Nintendo 9 Company Ltd., and are protected by Federal copyright law. They may 10 not be disclosed to third parties or copied or duplicated in any form, 11 in whole or in part, without the prior written consent of Nintendo. 12 13 $Rev: 25675 $ 14 *---------------------------------------------------------------------------*/ 15 16 #ifndef NN_CAMERA_CTR_CAMERA_API_H_ 17 #define NN_CAMERA_CTR_CAMERA_API_H_ 18 19 /*! @file 20 @brief CAMERA に関する API の宣言 21 */ 22 23 #include <nn/os.h> 24 #include <nn/math.h> 25 #include <nn/camera/CTR/camera_Types.h> 26 #include <nn/y2r/CTR/y2r_Types.h> 27 28 #include <nn/camera/CTR/camera_Camera.h> 29 30 namespace nn { 31 namespace camera { 32 namespace CTR { 33 34 namespace detail 35 { 36 nn::Result InitializeBase(Handle* pSession, const char* name, bool isCheck = false); 37 nn::Result PingProcess(); 38 void FinalizeBase(Handle* pSession); 39 void StartCapture( Port port ); 40 void StopCapture( Port port ); 41 bool IsBusy( Port port ); 42 void ClearBuffer( Port port ); 43 void GetVsyncInterruptEvent( nn::os::Event* pEvent, Port port ); 44 void GetBufferErrorInterruptEvent( nn::os::Event* pEvent, Port port ); 45 void SetReceiving( nn::os::Event* pEvent, u32 pDst, Port port, size_t imageSize, s16 transferUnit ); 46 bool IsFinishedReceiving( Port port ); 47 void SetTransferLines( Port port, s16 lines, s16 width, s16 height ); 48 s16 GetMaxLines( s16 width, s16 height ); 49 void SetTransferBytes( Port port, size_t bytes, s16 width, s16 height ); 50 size_t GetTransferBytes( Port port ); 51 size_t GetMaxBytes( s16 width, s16 height ); 52 void SetTrimming( Port port, bool enable ); 53 bool IsTrimming( Port port ); 54 void SetTrimmingParams( Port port, s16 xStart, s16 yStart, s16 xEnd, s16 yEnd ); 55 void GetTrimmingParams( s16* pXStart, s16* pYStart, s16* pXEnd, s16* pYEnd, Port port ); 56 void SetTrimmingParamsCenter( Port port, s16 trimWidth, s16 trimHeight, s16 camWidth, s16 camHeight ); 57 58 nn::Result Activate( CameraSelect select ); 59 nn::Result SwitchContext( CameraSelect select, Context next ); 60 nn::Result SetExposure( CameraSelect select, s8 exposure ); 61 nn::Result SetWhiteBalance( CameraSelect select, WhiteBalance wb ); 62 nn::Result SetSharpness( CameraSelect select, s8 sharpness ); 63 nn::Result SetAutoExposure( CameraSelect select, bool on ); 64 nn::Result IsAutoExposure( bool* pOn, CameraSelect select ); 65 nn::Result SetAutoWhiteBalance( CameraSelect select, bool on ); 66 nn::Result IsAutoWhiteBalance( bool* pOn, CameraSelect select ); 67 nn::Result FlipImage( CameraSelect select, Flip flip, Context context ); 68 nn::Result SetDetailSize( CameraSelect select, s16 width, s16 height, s16 cropX0, s16 cropY0, s16 cropX1, s16 cropY1, Context context ); 69 nn::Result SetSize( CameraSelect select, Size size, Context context ); 70 nn::Result SetFrameRate( CameraSelect select, FrameRate rate ); 71 nn::Result SetPhotoMode( CameraSelect select, PhotoMode mode ); 72 nn::Result SetEffect( CameraSelect select, Effect effect, Context context ); 73 nn::Result SetContrast( CameraSelect select, Contrast contrast ); 74 nn::Result SetLensCorrection( CameraSelect select, LensCorrection correction ); 75 nn::Result SetOutputFormat( CameraSelect select, OutputFormat format, Context context ); 76 nn::Result SetAutoExposureWindow( CameraSelect select, s16 startX, s16 startY, s16 width, s16 height ); 77 nn::Result SetAutoWhiteBalanceWindow( CameraSelect select, s16 startX, s16 startY, s16 width, s16 height ); 78 nn::Result SetNoiseFilter( CameraSelect select, bool on ); 79 nn::Result SynchronizeVsyncTiming( CameraSelect select1, CameraSelect select2 ); 80 void GetLatestVsyncTiming( nn::fnd::TimeSpan *pTime, Port port, size_t past ); 81 void GetStereoCameraCalibrationData( StereoCameraCalibrationData * pDst ); 82 f32 GetParallaxOnChart( const StereoCameraCalibrationData & cal ); 83 void GetStereoCameraCalibrationMatrix( nn::math::MTX34 * pDst, const StereoCameraCalibrationData & cal, const f32 translationByPixel, const bool isIncludeParallax ); 84 85 // パラメータ一括設定ユーティリティ関数 86 nn::Result SetPackageParameterWithoutContext(const PackageParameterCameraSelect& param); 87 nn::Result SetPackageParameterWithContext(const PackageParameterContext& param); 88 nn::Result SetPackageParameterWithContext(const PackageParameterContextDetail& param); 89 90 nn::Result GetSuitableY2rStandardCoefficient(nn::y2r::CTR::StandardCoefficient* no); 91 92 nn::Result PlayShutterSound( ShutterSoundType type ); 93 } 94 95 namespace 96 { 97 const char PORT_NAME_USER[] = "cam:u"; 98 } 99 100 /*! 101 @brief CAMERA ライブラリの初期化を行い、カメラを使用可能な状態にします。 102 103 @return 処理の結果が返ってきます。<BR> 104 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 105 LEVEL_INFO:SUMMARY_NOTHING_HAPPENED:MODULE_NN_CAMERA:DESCRIPTION_ALREADY_INITIALIZED ・・・すでに自分自身が初期化済みです。<BR> 106 LEVEL_PERMANENT:SUMMARY_INVALID_STATE:MODULE_NN_CAMERA:DESCRIPTION_ALREADY_INITIALIZED ・・・すでに他のプロセスが初期化済みのため使用できません。<BR> 107 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 108 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 109 110 */ 111 nn::Result Initialize(); 112 Initialize()113 inline nn::Result Initialize() { return detail::InitializeBase(&detail::Camera::s_Session, PORT_NAME_USER); } 114 115 /*! 116 @brief CAMERA ライブラリを終了します。 117 118 @return なし。 119 */ 120 void Finalize(); 121 Finalize()122 inline void Finalize() { detail::FinalizeBase(&detail::Camera::s_Session); } 123 124 /*! 125 @brief キャプチャを開始します。 126 127 @param[in] port 動作させるポートを指定します。 128 @return なし。 129 */ StartCapture(Port port)130 inline void StartCapture( Port port ) 131 { 132 detail::StartCapture(port); 133 } 134 /*! 135 @brief キャプチャを停止します。 136 137 @param[in] port 停止するポートを指定します。 138 @return なし。 139 */ StopCapture(Port port)140 inline void StopCapture( Port port ) 141 { 142 detail::StopCapture(port); 143 } 144 /*! 145 @brief カメラが画像データを取り込み中かどうかを取得します。 146 147 @param[in] port 確認するポートを指定します。 148 @return 取り込み中であれば true, そうでなければ false が返ります。 149 */ IsBusy(Port port)150 inline bool IsBusy( Port port ) 151 { 152 return detail::IsBusy(port); 153 } 154 /*! 155 @brief バッファ、エラーフラグをクリアします。 156 157 @param[in] port クリアするポートを指定します。 158 @return なし。 159 */ ClearBuffer(Port port)160 inline void ClearBuffer( Port port ) 161 { 162 detail::ClearBuffer(port); 163 } 164 /*! 165 @brief カメラのVSYNC割り込みの発生を検知するためのイベントを取得します。 166 167 @param[out] pEvent VSYNC割り込み発生時に起こされるイベントです。 168 @param[in] port 割り込みを検知するポートを指定します。 169 @return なし。 170 */ GetVsyncInterruptEvent(nn::os::Event * pEvent,Port port)171 inline void GetVsyncInterruptEvent( nn::os::Event* pEvent, Port port ) 172 { 173 detail::GetVsyncInterruptEvent(pEvent, port); 174 } 175 /*! 176 @brief カメラのバッファエラー割り込みと再起動処理の発生を検知するためのイベントを取得します。 177 178 再起動処理の発生通知は、PORT_CAM1, PORT_CAM2 両方に対して発生します。 179 180 @param[out] pEvent バッファエラーもしくは再起動処理の発生時に起こされるイベントです。 181 @param[in] port 割り込みを検知するポートを指定します。 182 @return なし。 183 */ GetBufferErrorInterruptEvent(nn::os::Event * pEvent,Port port)184 inline void GetBufferErrorInterruptEvent( nn::os::Event* pEvent, Port port ) 185 { 186 detail::GetBufferErrorInterruptEvent(pEvent, port); 187 } 188 /*! 189 @brief 画像データを読み込む設定をします。 190 1フレームの受信しか行いませんので、カメラフレーム毎に設定する必要があります。 191 192 @param[out] pEvent 転送完了時に起こされるイベントです。 193 @param[out] pDst 画像データが転送されます。 194 @param[in] port 画像データを読み込むポートを指定します。 195 @param[in] imageSize 転送する合計サイズ(フレームサイズ)を指定します。transferUnit の整数倍の必要があります。 196 @param[in] transferUnit 1回の転送サイズ(横サイズ×ライン数)を指定します。 197 @return なし。 198 */ SetReceiving(nn::os::Event * pEvent,void * pDst,Port port,size_t imageSize,s16 transferUnit)199 inline void SetReceiving( nn::os::Event* pEvent, void* pDst, Port port, size_t imageSize, s16 transferUnit ) 200 { 201 detail::SetReceiving(pEvent, reinterpret_cast<u32>(pDst), port, imageSize, transferUnit); 202 } 203 /*! 204 @brief 画像データの転送が終了したかチェックします。 205 206 @param[in] port 転送完了をチェックするポートを指定します。 207 @return 転送が終了していれば true, 終了していなければ false が返ります。 208 */ IsFinishedReceiving(Port port)209 inline bool IsFinishedReceiving( Port port ) 210 { 211 return detail::IsFinishedReceiving(port); 212 } 213 /*! 214 @brief バッファに保存するライン数を設定します。 215 216 保存するデータ量がバッファの容量(10 KB)を超えないように注意してください。 217 218 @param[in] port ライン数を設定するポートを指定します。 219 @param[in] lines ライン数を指定します。<BR> 220 以下のすべての条件を満たす必要があります。<BR> 221 (1) 転送データ量 (width * lines * 2) が 256 Byte の倍数である<BR> 222 (2) height が lines の倍数である<BR> 223 (3) 転送データ量 (width * lines * 2) が 10 KByte (10240 Byte) 以下である 224 @param[in] width 転送する画像の横幅を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。 225 @param[in] height 転送する画像の高さを指定します。トリミングをする場合にはトリミング後の画像の高さを指定してください。 226 @return なし。 227 */ SetTransferLines(Port port,s16 lines,s16 width,s16 height)228 inline void SetTransferLines( Port port, s16 lines, s16 width, s16 height ) 229 { 230 detail::SetTransferLines(port, lines, width, height); 231 } 232 /*! 233 @brief バッファに保存できる最大のライン数を取得します。 234 235 バッファには最大 10 KByte までデータを保存することができますが、バッファエラーを回避するため 236 最大値の半分である 5 KByte を基準に、ライン数を返します。 237 238 以下のすべての条件を満たすライン数 lines が存在しない場合、内部で停止します。<BR> 239 (1) 転送データ量 (width * lines * 2) が 256 Byte の倍数である<BR> 240 (2) height が lines の倍数である<BR> 241 (3) 転送データ量 (width * lines * 2) が 5 KByte (5120 Byte) 以下である 242 243 @param[in] width 横幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。 244 @param[in] height 高さ(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の高さを指定してください。 245 @return バッファに保存できる最大のライン数を返します。 246 */ GetMaxLines(s16 width,s16 height)247 inline s16 GetMaxLines( s16 width, s16 height ) 248 { 249 return detail::GetMaxLines( width, height ); 250 } 251 /*! 252 @brief バッファに保存するバイト数を設定します。 253 254 保存するデータ量がバッファの容量(10 KB)を超えないように注意してください。 255 256 @param[in] port バイト数を設定するポートを指定します。 257 @param[in] bytes バイト数を指定します。<BR> 258 以下のすべての条件を満たす必要があります。<BR> 259 (1) bytes が 256 Byte の倍数である<BR> 260 (2) 画像1フレームのデータ量 (width * height * 2) が bytes の倍数である 261 @param[in] width 転送する画像の横幅を指定します。トリミングを有効にしている場合にはトリミング後の画像の横幅を指定してください。 262 @param[in] height 転送する画像の高さを指定します。トリミングを有効にしている場合にはトリミング後の画像の高さを指定してください。 263 @return なし。 264 */ SetTransferBytes(Port port,size_t bytes,s16 width,s16 height)265 inline void SetTransferBytes( Port port, size_t bytes, s16 width, s16 height ) 266 { 267 detail::SetTransferBytes(port, bytes, width, height); 268 } 269 /*! 270 @brief バッファに保存するバイト数の現在の設定を取得します。 271 272 @param[in] port 設定を取得するポートを指定します。 273 @return 転送バイト数の現在の設定を返します。 274 */ GetTransferBytes(Port port)275 inline size_t GetTransferBytes( Port port ) 276 { 277 return detail::GetTransferBytes(port); 278 } 279 /*! 280 @brief バッファに保存できる最大のバイト数を取得します。 281 282 バッファには最大 10 KByte までデータを保存することができますが、バッファエラーを回避するため 283 最大値の半分である 5 KByte を基準に、バイト数を返します。<BR> 284 なお、以下の条件を満たさない場合、内部で停止します。<BR> 285 ・画像1フレームのデータ量 (width * height * 2) が 256 Byte の倍数である 286 287 @param[in] width 横幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。 288 @param[in] height 高さ(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。 289 @return バッファに保存できる最大のバイト数を返します。 290 */ GetMaxBytes(s16 width,s16 height)291 inline size_t GetMaxBytes( s16 width, s16 height ) 292 { 293 return detail::GetMaxBytes( width, height ); 294 } 295 /*! 296 @brief 1ラインのバイト数を取得します。 297 298 @param[in] width 横幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。 299 @return 1ラインのバイト数を返します。 300 */ GetLineBytes(s16 width)301 inline size_t GetLineBytes( s16 width ) 302 { 303 return ((width) << 1); // 1画素あたり2バイト必要 304 } 305 /*! 306 @brief 1フレームのバイト数を取得します。 307 308 @param[in] width 横幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。 309 @param[in] height 縦幅(ピクセル)を指定します。トリミングをする場合にはトリミング後の画像の横幅を指定してください。 310 @return 1フレームのバイト数を返します。 311 */ GetFrameBytes(s16 width,s16 height)312 inline size_t GetFrameBytes( s16 width, s16 height ) 313 { 314 return (GetLineBytes(width) * (height)); 315 } 316 /*! 317 @brief トリミングの有効、無効を切り替えます。 318 319 @param[in] port 設定を変更するポートを指定します。 320 @param[in] enable トリミングを有効にするならば true, そうでないなら false を指定します。 321 @return なし。 322 */ SetTrimming(Port port,bool enable)323 inline void SetTrimming( Port port, bool enable ) 324 { 325 detail::SetTrimming(port, enable); 326 } 327 /*! 328 @brief トリミングが有効になっているかチェックします。 329 330 @param[in] port 設定を確認するポートを指定します。 331 @return トリミングが有効ならば true, 無効ならば false を返します。 332 */ IsTrimming(Port port)333 inline bool IsTrimming( Port port ) 334 { 335 return detail::IsTrimming(port); 336 } 337 /*! 338 @brief トリミングを行う位置を設定します。 339 340 設定できる値には以下の制限があります。<BR> 341 ・トリミング範囲は (xStart,yStart) から (xEnd-1, yEnd-1) までとなる。<BR> 342 ・xEnd - xStart, 及び yEnd - yStart の値が偶数になる必要がある。<BR> 343 ・xStart および yStart も偶数である必要がある。 344 345 @param[in] port 設定を変更するポートを指定します。 346 @param[in] xStart トリミング開始位置(x座標) 347 @param[in] yStart トリミング開始位置(y座標) 348 @param[in] xEnd トリミング終了位置(x座標) 349 @param[in] yEnd トリミング終了位置(y座標) 350 @return なし。 351 */ SetTrimmingParams(Port port,s16 xStart,s16 yStart,s16 xEnd,s16 yEnd)352 inline void SetTrimmingParams( Port port, s16 xStart, s16 yStart, s16 xEnd, s16 yEnd ) 353 { 354 detail::SetTrimmingParams(port, xStart, yStart, xEnd, yEnd); 355 } 356 /*! 357 @brief トリミングを行う位置を取得します。 358 359 @param[out] pXStart トリミング開始位置(x座標) 360 @param[out] pYStart トリミング開始位置(y座標) 361 @param[out] pXEnd トリミング終了位置(x座標) 362 @param[out] pYEnd トリミング終了位置(y座標) 363 @param[in] port 設定を取得するポートを指定します。 364 @return なし。 365 */ GetTrimmingParams(s16 * pXStart,s16 * pYStart,s16 * pXEnd,s16 * pYEnd,Port port)366 inline void GetTrimmingParams( s16* pXStart, s16* pYStart, s16* pXEnd, s16* pYEnd, Port port ) 367 { 368 detail::GetTrimmingParams(pXStart, pYStart, pXEnd, pYEnd, port); 369 } 370 /*! 371 @brief トリミングを行う位置をカメラ画像の中心を基準に設定します。 372 373 設定できる値には SetTrimmingParams 関数と同じ制限があります。 374 375 @param[in] port 設定を変更するポートを指定します。 376 @param[in] trimWidth トリミングする横幅 377 @param[in] trimHeight トリミングする縦幅 378 @param[in] camWidth カメラ解像度の横幅 379 @param[in] camHeight カメラ解像度の縦幅 380 @return なし。 381 */ SetTrimmingParamsCenter(Port port,s16 trimWidth,s16 trimHeight,s16 camWidth,s16 camHeight)382 inline void SetTrimmingParamsCenter( Port port, s16 trimWidth, s16 trimHeight, s16 camWidth, s16 camHeight ) 383 { 384 detail::SetTrimmingParamsCenter(port, trimWidth, trimHeight, camWidth, camHeight); 385 } 386 387 388 /*! 389 @brief カメラを起動します。 390 391 (注意)<BR> 392 カメラを起動した直後の4フレームは取得した画像が極端に暗い場合があります。 393 また、カメラが起動した後に自動露出が安定するまでのフレームは上記の4フレームと合わせて、 394 屋内で14フレーム、屋外で30フレーム程度となります。 395 396 @param[in] select 起動するカメラを指定します。 397 @return 処理の結果が返ってきます。<BR> 398 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 399 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 400 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 401 */ Activate(CameraSelect select)402 inline nn::Result Activate( CameraSelect select ) 403 { 404 return detail::Activate(select); 405 } 406 /*! 407 @brief カメラ設定のコンテキストを切り替えます。 408 409 @param[in] select コンテキストを切り替えるカメラを指定します。 410 @param[in] next 切り替え先のコンテキストを指定します。 411 @return 処理の結果が返ってきます。<BR> 412 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 413 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 414 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 415 */ SwitchContext(CameraSelect select,Context next)416 inline nn::Result SwitchContext( CameraSelect select, Context next ) 417 { 418 return detail::SwitchContext(select, next); 419 } 420 /*! 421 @brief 露光を設定します。 422 423 @param[in] select 設定を変更するカメラを指定します。 424 @param[in] exposure 露出量を指定します。指定可能な値の範囲は [-5, +5] です。 425 @return 処理の結果が返ってきます。<BR> 426 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 427 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 428 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 429 */ SetExposure(CameraSelect select,s8 exposure)430 inline nn::Result SetExposure( CameraSelect select, s8 exposure ) 431 { 432 return detail::SetExposure(select, exposure); 433 } 434 /*! 435 @brief ホワイトバランスを設定します。 436 437 @param[in] select 設定を変更するカメラを指定します。 438 @param[in] wb ホワイトバランスを指定します。 439 @return 処理の結果が返ってきます。<BR> 440 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 441 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 442 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 443 */ SetWhiteBalance(CameraSelect select,WhiteBalance wb)444 inline nn::Result SetWhiteBalance( CameraSelect select, WhiteBalance wb ) 445 { 446 return detail::SetWhiteBalance(select, wb); 447 } 448 /*! 449 @brief 鮮明度を設定します。 450 451 @param[in] select 設定を変更するカメラを指定します。 452 @param[in] sharpness 鮮明度を指定します。指定可能な値の範囲は [-4, +5] です。 453 @return 処理の結果が返ってきます。<BR> 454 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 455 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 456 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 457 */ SetSharpness(CameraSelect select,s8 sharpness)458 inline nn::Result SetSharpness( CameraSelect select, s8 sharpness ) 459 { 460 return detail::SetSharpness(select, sharpness); 461 } 462 /*! 463 @brief 自動露出機能の有効・無効を設定します。 464 465 @param[in] select 設定を変更するカメラを指定します。 466 @param[in] on 有効にするならば true, そうでないなら false を指定します。 467 @return 処理の結果が返ってきます。<BR> 468 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 469 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 470 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 471 */ SetAutoExposure(CameraSelect select,bool on)472 inline nn::Result SetAutoExposure( CameraSelect select, bool on ) 473 { 474 return detail::SetAutoExposure(select, on); 475 } 476 /*! 477 @brief 自動露出機能が有効になっているかチェックします。 478 479 @param[out] pOn 有効になっていれば true, そうでなければ false が返されます。 480 @param[in] select 設定を確認するカメラを指定します。 481 @return 処理の結果が返ってきます。<BR> 482 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 483 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 484 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 485 */ IsAutoExposure(bool * pOn,CameraSelect select)486 inline nn::Result IsAutoExposure( bool* pOn, CameraSelect select ) 487 { 488 return detail::IsAutoExposure(pOn, select); 489 } 490 /*! 491 @brief ホワイトバランスの自動調整機能の有効・無効を設定します。 492 493 @param[in] select 設定を変更するカメラを指定します。 494 @param[in] on 有効にするならば true, そうでないなら false を指定します。 495 @return 処理の結果が返ってきます。<BR> 496 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 497 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 498 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 499 */ SetAutoWhiteBalance(CameraSelect select,bool on)500 inline nn::Result SetAutoWhiteBalance( CameraSelect select, bool on ) 501 { 502 return detail::SetAutoWhiteBalance(select, on); 503 } 504 /*! 505 @brief ホワイトバランスの自動調整機能が有効になっているかチェックします。 506 507 @param[out] pOn 有効になっていれば true, そうでなければ false が返されます。 508 @param[in] select 設定を確認するカメラを指定します。 509 @return 処理の結果が返ってきます。<BR> 510 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 511 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 512 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 513 */ IsAutoWhiteBalance(bool * pOn,CameraSelect select)514 inline nn::Result IsAutoWhiteBalance( bool* pOn, CameraSelect select ) 515 { 516 return detail::IsAutoWhiteBalance(pOn, select); 517 } 518 /*! 519 @brief 画像への反転処理を設定します。 520 521 @param[in] select 設定を変更するカメラを指定します。 522 @param[in] flip 反転処理を指定します。 523 @param[in] context 設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。 524 @return 処理の結果が返ってきます。<BR> 525 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 526 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 527 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 528 */ 529 inline nn::Result FlipImage( CameraSelect select, Flip flip, Context context = CONTEXT_BOTH ) 530 { 531 return detail::FlipImage(select, flip, context); 532 } 533 /*! 534 @brief 解像度をピクセル単位で設定します。 535 536 @param[in] select 設定を変更するカメラを指定します。 537 @param[in] width 画像の横幅を指定します。 538 @param[in] height 画像の横幅を指定します。 539 @param[in] cropX0 640×480の元画像の一部をカメラモジュール内部でクロップする場合のクロップ領域の左上端点の横方向座標を指定します。 540 画像の出力サイズにかかわらず [0, 639] の範囲で指定してください。 541 クロップ領域の幅が出力画像の幅以上となるように指定してください。 542 省略すると 0 が設定されます。 543 @param[in] cropY0 640×480の元画像の一部をカメラモジュール内部でクロップする場合のクロップ領域の左上端点の縦方向座標を指定します。 544 画像の出力サイズにかかわらず [0, 479] の範囲で指定してください。 545 クロップ領域の高さが出力画像の高さ以上となるように指定してください。 546 省略すると 0 が設定されます。 547 @param[in] cropX1 640×480の元画像の一部をカメラモジュール内部でクロップする場合のクロップ領域の右下端点の横方向座標を指定します。 548 画像の出力サイズにかかわらず [0, 639] の範囲で指定してください。 549 クロップ領域の幅が出力画像の幅以上となるように指定してください。 550 省略すると 639 が設定されます。 551 @param[in] cropY1 640×480の元画像の一部をカメラモジュール内部でクロップする場合のクロップ領域の右下端点の縦方向座標を指定します。 552 画像の出力サイズにかかわらず [0, 479] の範囲で指定してください。 553 クロップ領域の高さが出力画像の高さ以上となるように指定してください。 554 省略すると 479 が設定されます。 555 @param[in] context 設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。 556 @return 処理の結果が返ってきます。<BR> 557 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 558 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 559 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 560 */ 561 inline nn::Result SetDetailSize( CameraSelect select, s16 width, s16 height, s16 cropX0 = 0, s16 cropY0 = 0, s16 cropX1 = 639, s16 cropY1 = 479, Context context = CONTEXT_BOTH ) 562 { 563 return detail::SetDetailSize(select, width, height, cropX0, cropY0, cropX1, cropY1, context); 564 } 565 /*! 566 @brief 解像度を設定します。 567 568 @param[in] select 設定を変更するカメラを指定します。 569 @param[in] size 解像度を指定します。 570 @param[in] context 設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。 571 @return 処理の結果が返ってきます。<BR> 572 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 573 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 574 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 575 */ 576 inline nn::Result SetSize( CameraSelect select, Size size, Context context = CONTEXT_BOTH ) 577 { 578 return detail::SetSize(select, size, context); 579 } 580 /*! 581 @brief フレームレートを設定します。 582 583 @param[in] select 設定を変更するカメラを指定します。 584 @param[in] rate フレームレートを指定します。 585 @return 処理の結果が返ってきます。<BR> 586 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 587 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 588 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 589 */ SetFrameRate(CameraSelect select,FrameRate rate)590 inline nn::Result SetFrameRate( CameraSelect select, FrameRate rate ) 591 { 592 return detail::SetFrameRate(select, rate); 593 } 594 /*! 595 @brief 撮影モードを設定します。 596 597 @param[in] select 設定を変更するカメラを指定します。 598 @param[in] mode 撮影モードを指定します。 599 @return 処理の結果が返ってきます。<BR> 600 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 601 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 602 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 603 */ SetPhotoMode(CameraSelect select,PhotoMode mode)604 inline nn::Result SetPhotoMode( CameraSelect select, PhotoMode mode ) 605 { 606 return detail::SetPhotoMode(select, mode); 607 } 608 /*! 609 @brief 画像へのエフェクトを設定します。 610 611 @param[in] select 設定を変更するカメラを指定します。 612 @param[in] effect エフェクトを指定します。 613 @param[in] context 設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。 614 @return 処理の結果が返ってきます。<BR> 615 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 616 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 617 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 618 */ 619 inline nn::Result SetEffect( CameraSelect select, Effect effect, Context context = CONTEXT_BOTH ) 620 { 621 return detail::SetEffect(select, effect, context); 622 } 623 /*! 624 @brief 画像のコントラスト(ガンマカーブ)を設定します。 625 626 @param[in] select 設定を変更するカメラを指定します。 627 @param[in] contrast コントラスト(ガンマカーブ)を指定します。 628 @return 処理の結果が返ってきます。<BR> 629 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 630 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 631 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 632 */ SetContrast(CameraSelect select,Contrast contrast)633 inline nn::Result SetContrast( CameraSelect select, Contrast contrast ) 634 { 635 return detail::SetContrast(select, contrast); 636 } 637 /*! 638 @brief レンズ補正の程度を設定します。 639 640 ここでのレンズ補正とは、光量の差によって画像の中心と周辺の明るさに差が出てしまう現象(周辺光量低下)の対策として、 641 画像の周辺の明るさを補正し、中心の明るさに近づける処理のことを指します。 642 643 @param[in] select 設定を変更するカメラを指定します。 644 @param[in] correction レンズ補正の程度を指定します。 645 @return 処理の結果が返ってきます。<BR> 646 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 647 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 648 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 649 */ SetLensCorrection(CameraSelect select,LensCorrection correction)650 inline nn::Result SetLensCorrection( CameraSelect select, LensCorrection correction ) 651 { 652 return detail::SetLensCorrection(select, correction); 653 } 654 /*! 655 @brief 画像の出力形式を設定します。 656 657 :private 658 659 @param[in] select 設定を変更するカメラを指定します。 660 @param[in] format 出力形式を指定します。画像形式によって画質が異なりますのでご注意ください。 661 @param[in] context 設定を変更するコンテキストを指定します。省略するとコンテキストAとBの両方に設定が反映されます。 662 @return 処理の結果が返ってきます。<BR> 663 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 664 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 665 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 666 */ 667 inline nn::Result SetOutputFormat( CameraSelect select, OutputFormat format, Context context = CONTEXT_BOTH ) 668 { 669 return detail::SetOutputFormat(select, format, context); 670 } 671 /*! 672 @brief 自動露出の計算の基準となる領域(反応枠)を設定します。 673 674 @param[in] select 設定を変更するカメラを指定します。 675 @param[in] startX 領域の左上端点の横方向座標を指定します。画像の左上端点の横方向座標を0として[0, 600]の間で40ピクセル単位で指定できます。 676 @param[in] startY 領域の左上端点の縦方向座標を指定します。画像の左上端点の縦方向座標を0として[0, 450]の間で30ピクセル単位で指定できます。 677 @param[in] width 領域の横幅を指定します。[0, 640]の間で40ピクセル単位で指定できます。 678 @param[in] height 領域の高さを指定します。[0, 480]の間で30ピクセル単位で指定できます。 679 @return 処理の結果が返ってきます。<BR> 680 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 681 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 682 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 683 */ SetAutoExposureWindow(CameraSelect select,s16 startX,s16 startY,s16 width,s16 height)684 inline nn::Result SetAutoExposureWindow( CameraSelect select, s16 startX, s16 startY, s16 width, s16 height ) 685 { 686 return detail::SetAutoExposureWindow( select, startX, startY, width, height ); 687 } 688 /*! 689 @brief オートホワイトバランスの計算の基準となる領域(反応枠)を設定します。 690 691 @param[in] select 設定を変更するカメラを指定します。 692 @param[in] startX 領域の左上端点の横方向座標を指定します。画像の左上端点の横方向座標を0として[0, 600]の間で40ピクセル単位で指定できます。 693 @param[in] startY 領域の左上端点の縦方向座標を指定します。画像の左上端点の縦方向座標を0として[0, 450]の間で30ピクセル単位で指定できます。 694 @param[in] width 領域の横幅を指定します。[0, 640]の間で40ピクセル単位で指定できます。 695 @param[in] height 領域の高さを指定します。[0, 480]の間で30ピクセル単位で指定できます。 696 @return 処理の結果が返ってきます。<BR> 697 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 698 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 699 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 700 */ SetAutoWhiteBalanceWindow(CameraSelect select,s16 startX,s16 startY,s16 width,s16 height)701 inline nn::Result SetAutoWhiteBalanceWindow( CameraSelect select, s16 startX, s16 startY, s16 width, s16 height ) 702 { 703 return detail::SetAutoWhiteBalanceWindow( select, startX, startY, width, height ); 704 } 705 /*! 706 @brief ノイズフィルタを設定します。 707 708 @param[in] select 設定を変更するカメラを指定します。 709 @param[in] on ノイズフィルタを有効にする場合には true を指定し、無効にする場合には false を指定してください。デフォルトではノイズフィルタは有効です。 710 @return 処理の結果が返ってきます。<BR> 711 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 712 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 713 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 714 */ SetNoiseFilter(CameraSelect select,bool on)715 inline nn::Result SetNoiseFilter( CameraSelect select, bool on ) 716 { 717 return detail::SetNoiseFilter( select, on ); 718 } 719 /*! 720 @brief カメラVSYNC信号のタイミングを同期させます。ただし、タイミングのズレが完全に0になるわけではありません。 721 722 (注意)<BR> 723 指定した2つのカメラ画像の明るさが異なる場合、 724 関数実行直後の3フレームは取得した画像が極端に明るい場合があります。 725 また、この場合、自動露出が安定するまでに最大で12フレームかかることがあります。 726 727 @param[in] select1 同期の対象となるカメラを指定します。 728 @param[in] select2 同期の対象となるカメラを指定します。 729 @return 処理の結果が返ってきます。<BR> 730 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 731 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 732 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 733 */ SynchronizeVsyncTiming(CameraSelect select1,CameraSelect select2)734 inline nn::Result SynchronizeVsyncTiming( CameraSelect select1, CameraSelect select2 ) 735 { 736 return detail::SynchronizeVsyncTiming( select1, select2 ); 737 } 738 /*! 739 @brief カメラVsync信号が入力されたタイミングの履歴を取得します。 740 741 内部的には、カメラ割り込みのハンドラ内で Tick 値を取得しています。 742 743 @param[out] pTime タイミングの格納先を指定します。 744 @param[in] port タイミングを取得したいカメラが接続されているポートを指定します。 745 @param[in] past タイミングの履歴の数を指定します。 746 1 から 5 の間の整数を指定することができます。省略した場合、1 となります。 747 pTime には直前のタイミングを先頭として過去にさかのぼって値が格納されます。 748 そのため、pTime には past の分だけ領域が確保されている必要があります。 749 ただし、カメラが起動してから入力された Vsync 信号の数(便宜上 frame とよびます)が past よりも小さい場合、 750 pTime[frame] から pTime[past-1] までには TimeSpan(0) が格納されます。 751 @return なし。 752 */ 753 inline void GetLatestVsyncTiming( nn::fnd::TimeSpan *pTime, Port port, size_t past = 1) 754 { 755 detail::GetLatestVsyncTiming( pTime, port, past ); 756 } 757 /*! 758 @brief ステレオカメラの位置キャリブレーションデータを取得します。 759 760 @param[out] pDst キャリブレーションデータの格納先を指定します。 761 @return なし。 762 */ GetStereoCameraCalibrationData(StereoCameraCalibrationData * pDst)763 inline void GetStereoCameraCalibrationData( StereoCameraCalibrationData * pDst ) 764 { 765 detail::GetStereoCameraCalibrationData( pDst ); 766 } 767 /*! 768 @brief ステレオカメラのキャリブレーションデータ測定時の測定チャート上での視差を計算します。 769 770 @param[in] cal キャリブレーションデータを指定します。 771 @return 測定チャート上での視差を返します。 772 返り値は右カメラ画像を基準とした場合の左カメラ画像の移動量として表現されます。 773 単位はピクセルです。 774 */ GetParallaxOnChart(const StereoCameraCalibrationData & cal)775 inline f32 GetParallaxOnChart( const StereoCameraCalibrationData & cal ) 776 { 777 return detail::GetParallaxOnChart( cal ); 778 } 779 /*! 780 @brief 3D空間上で左カメラ画像を右カメラ画像に合わせるための補正行列を計算します。 781 782 @param[out] pDst 補正行列の格納先を指定します。 783 @param[in] cal キャリブレーションデータを指定します。 784 @param[in] translationByPixel 3D空間上でのカメラ画像を 1 ピクセル分だけ並進移動させるために必要な移動量を指定します。 785 @param[in] isIncludeParallax 水平方向の移動量に測定チャート上での視差を含めるかどうかを指定します。 786 @return なし。 787 */ 788 inline void GetStereoCameraCalibrationMatrix( 789 nn::math::MTX34 * pDst, 790 const StereoCameraCalibrationData & cal, 791 const f32 translationByPixel, 792 const bool isIncludeParallax = true ) 793 { 794 detail::GetStereoCameraCalibrationMatrix( pDst, cal, translationByPixel, isIncludeParallax ); 795 } 796 797 /*! 798 @brief コンテキスト指定のないカメラの設定を一括して設定します。 799 800 @param[in] param 設定するパラメータです。 801 @return 処理の結果が返ってきます。<BR> 802 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 803 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 804 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 805 */ SetPackageParameterWithoutContext(const PackageParameterCameraSelect & param)806 inline nn::Result SetPackageParameterWithoutContext(const PackageParameterCameraSelect& param) 807 { 808 return detail::SetPackageParameterWithoutContext( param ); 809 } 810 811 /*! 812 :overload nodetail 813 814 @brief コンテキスト指定のあるカメラの設定を一括して設定します。 815 解像度を列挙体で設定する際に使用します。 816 817 @param[in] param 設定するパラメータです。 818 @return 処理の結果が返ってきます。<BR> 819 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 820 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 821 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 822 */ SetPackageParameterWithContext(const PackageParameterContext & param)823 inline nn::Result SetPackageParameterWithContext(const PackageParameterContext& param) 824 { 825 return detail::SetPackageParameterWithContext( param ); 826 } 827 828 /*! 829 :overload nodetail 830 831 @brief コンテキスト指定のあるカメラの設定を一括して設定します。 832 解像度をピクセル単位で設定する際に使用します。 833 834 @param[in] param 設定するパラメータです。 835 @return 処理の結果が返ってきます。<BR> 836 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 837 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 838 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 839 */ SetPackageParameterWithContext(const PackageParameterContextDetail & param)840 inline nn::Result SetPackageParameterWithContext(const PackageParameterContextDetail& param) 841 { 842 return detail::SetPackageParameterWithContext( param ); 843 } 844 845 /*! 846 @brief カメラの出力データに適した Y2R の変換係数を取得します。 847 848 @param[out] no カメラから取得した YUV データを RGB に変換する際に適した標準的な変換係数のタイプです。 849 @return 処理の結果が返ってきます。<BR> 850 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 851 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 852 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 853 */ GetSuitableY2rStandardCoefficient(nn::y2r::CTR::StandardCoefficient * no)854 inline nn::Result GetSuitableY2rStandardCoefficient(nn::y2r::CTR::StandardCoefficient* no) 855 { 856 return detail::GetSuitableY2rStandardCoefficient( no ); 857 } 858 859 /*! 860 @brief シャッター音の再生とカメラLEDの一時消灯を行います。 861 862 @param[in] type 再生するシャッター音の種類を指定します。 863 @return 処理の結果が返ってきます。<BR> 864 LEVEL_SUCCESS:SUMMARY_SUCCESS:MODULE_COMMON:DESCRIPTION_SUCCESS ・・・ 成功しました。<BR> 865 LEVEL_STATUS:SUMMARY_STATUS_CHANGED:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_IS_SLEEPING ・・・スリープ中であるため使用できません。<BR> 866 LEVEL_FATAL:SUMMARY_INTERNAL:MODULE_NN_CAMERA:DESCRIPTION_CAMERA_FATAL_ERROR ・・・カメラが物理的に故障している可能性があります。<BR> 867 */ PlayShutterSound(ShutterSoundType type)868 inline nn::Result PlayShutterSound( ShutterSoundType type ) 869 { 870 return detail::PlayShutterSound( type ); 871 } 872 } 873 } 874 } 875 876 #endif // ifndef NN_CAMERA_CTR_CAMERA_API_H_ 877