From 84967062162cce1eced994fd7f0560c7c2092af4 Mon Sep 17 00:00:00 2001 From: Alexander Smorkalov Date: Thu, 31 Jul 2025 12:46:58 +0300 Subject: [PATCH] Added timestamps support for Orbbec SDK backend in VideoIO. --- modules/videoio/include/opencv2/videoio.hpp | 2 ++ .../videoio/src/cap_obsensor_liborbbec.cpp | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+) 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; }