From ee4a6625eb539b7e67924301339d1d0eb160cdca Mon Sep 17 00:00:00 2001 From: Ben <987807597@qq.com> Date: Wed, 26 Aug 2026 09:59:14 +0800 Subject: [PATCH] feat: expose read-only detection ROI --- src/VizumCamera.cpp | 37 ++++++++++++++++++++++++++++++++++++- src/VizumCamera.h | 15 +++++++++++++++ 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/src/VizumCamera.cpp b/src/VizumCamera.cpp index 23f79c0..cd0fce1 100755 --- a/src/VizumCamera.cpp +++ b/src/VizumCamera.cpp @@ -1624,10 +1624,45 @@ bool VizumCamera::SetConfig(const std::string& configJson) return false; } +bool VizumCamera::GetDetectROI(ROIRect& leftROI, ROIRect& rightROI) +{ +#ifdef ENABLE_VIZUM_CAMERA + const std::lock_guard deviceLock(m_deviceAccessMutex); + if (!m_isConnected || !m_deviceHandle) { + LOG_WARN("[VizumCamera] GetDetectROI failed: device not connected"); + return false; + } + + SVzNLROIRect sdkLeft{}; + SVzNLROIRect sdkRight{}; + const int ret = VzNL_GetConfigDetectROI(m_deviceHandle, &sdkLeft, &sdkRight); + if (ret != 0) { + char errorMsg[256] = {0}; + VzNL_GetErrorInfo(ret, errorMsg); + LOG_ERROR("[VizumCamera] VzNL_GetConfigDetectROI failed: {} (error code: {})", + errorMsg, ret); + return false; + } + + leftROI = {sdkLeft.left, sdkLeft.right, sdkLeft.top, sdkLeft.bottom}; + rightROI = {sdkRight.left, sdkRight.right, sdkRight.top, sdkRight.bottom}; + LOG_INFO("[VizumCamera] Detect ROI read only: left=[{}, {}, {}, {}], " + "right=[{}, {}, {}, {}]", + leftROI.left, leftROI.right, leftROI.top, leftROI.bottom, + rightROI.left, rightROI.right, rightROI.top, rightROI.bottom); + return true; +#else + (void)leftROI; + (void)rightROI; + return false; +#endif +} + bool VizumCamera::SetCalibROIEnabled(bool enable) { #ifdef ENABLE_VIZUM_CAMERA - if (!m_deviceHandle) { + const std::lock_guard deviceLock(m_deviceAccessMutex); + if (!m_isConnected || !m_deviceHandle) { LOG_WARN("[VizumCamera] SetCalibROIEnabled({}) failed: device not connected", enable); return false; } diff --git a/src/VizumCamera.h b/src/VizumCamera.h index 1b62351..93f8a0e 100755 --- a/src/VizumCamera.h +++ b/src/VizumCamera.h @@ -14,6 +14,13 @@ namespace StructuredLight { +struct ROIRect { + int left = 0; + int right = 0; + int top = 0; + int bottom = 0; +}; + /** * @brief 伟景智能 Vizum 结构光相机实现类 */ @@ -128,6 +135,14 @@ public: */ bool SetCalibROIEnabled(bool enable); + /** + * @brief 读取当前左右目检测 ROI,不修改相机配置 + * @param[out] leftROI 左目检测 ROI(全幅图坐标) + * @param[out] rightROI 右目检测 ROI(全幅图坐标) + * @return 是否成功 + */ + bool GetDetectROI(ROIRect& leftROI, ROIRect& rightROI); + /** * @brief 启动自动检测模式进行摆镜扫描采集点云 * @param[out] pointCloud 输出点云