diff --git a/modules/videoio/include/opencv2/videoio.hpp b/modules/videoio/include/opencv2/videoio.hpp index d618874c4a..b9a490bd0f 100644 --- a/modules/videoio/include/opencv2/videoio.hpp +++ b/modules/videoio/include/opencv2/videoio.hpp @@ -714,6 +714,8 @@ enum VideoCaptureOBSensorProperties{ CAP_PROP_OBSENSOR_INTRINSIC_FY=26002, CAP_PROP_OBSENSOR_INTRINSIC_CX=26003, CAP_PROP_OBSENSOR_INTRINSIC_CY=26004, + CAP_PROP_OBSENSOR_RGB_POS_MSEC=26005, + CAP_PROP_OBSENSOR_DEPTH_POS_MSEC=26006, }; //! @} OBSENSOR diff --git a/modules/videoio/src/cap_obsensor_liborbbec.cpp b/modules/videoio/src/cap_obsensor_liborbbec.cpp index ac581d81dc..5bb4a925d3 100644 --- a/modules/videoio/src/cap_obsensor_liborbbec.cpp +++ b/modules/videoio/src/cap_obsensor_liborbbec.cpp @@ -83,7 +83,31 @@ double VideoCapture_obsensor::getProperty(int propIdx) const case CAP_PROP_OBSENSOR_INTRINSIC_CY: rst = camParam.p1[3]; break; + case CAP_PROP_POS_MSEC: + case CAP_PROP_OBSENSOR_RGB_POS_MSEC: + if (grabbedColorFrame) + { + rst = grabbedColorFrame->globalTimeStampUs(); + if (rst == 0.0) + { + CV_LOG_ONCE_WARNING(NULL, "Camera reports zero global timestamp. System timestamp is used instead."); + rst = grabbedColorFrame->systemTimeStamp(); + } + } + break; + case CAP_PROP_OBSENSOR_DEPTH_POS_MSEC: + if (grabbedDepthFrame) + { + rst = grabbedDepthFrame->systemTimeStamp(); + if (rst == 0.0) + { + CV_LOG_ONCE_WARNING(NULL, "Camera reports zero global timestamp. System timestamp is used instead."); + rst = grabbedDepthFrame->systemTimeStamp(); + } + } + break; } + return rst; }