feat: expose read-only detection ROI

This commit is contained in:
Ben 2026-08-26 09:59:14 +08:00
parent 953921c684
commit ee4a6625eb
2 changed files with 51 additions and 1 deletions

View File

@ -1624,10 +1624,45 @@ bool VizumCamera::SetConfig(const std::string& configJson)
return false; return false;
} }
bool VizumCamera::GetDetectROI(ROIRect& leftROI, ROIRect& rightROI)
{
#ifdef ENABLE_VIZUM_CAMERA
const std::lock_guard<std::mutex> 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) bool VizumCamera::SetCalibROIEnabled(bool enable)
{ {
#ifdef ENABLE_VIZUM_CAMERA #ifdef ENABLE_VIZUM_CAMERA
if (!m_deviceHandle) { const std::lock_guard<std::mutex> deviceLock(m_deviceAccessMutex);
if (!m_isConnected || !m_deviceHandle) {
LOG_WARN("[VizumCamera] SetCalibROIEnabled({}) failed: device not connected", enable); LOG_WARN("[VizumCamera] SetCalibROIEnabled({}) failed: device not connected", enable);
return false; return false;
} }

View File

@ -14,6 +14,13 @@
namespace StructuredLight { namespace StructuredLight {
struct ROIRect {
int left = 0;
int right = 0;
int top = 0;
int bottom = 0;
};
/** /**
* @brief 伟景智能 Vizum 结构光相机实现类 * @brief 伟景智能 Vizum 结构光相机实现类
*/ */
@ -128,6 +135,14 @@ public:
*/ */
bool SetCalibROIEnabled(bool enable); bool SetCalibROIEnabled(bool enable);
/**
* @brief 读取当前左右目检测 ROI,不修改相机配置
* @param[out] leftROI 左目检测 ROI(全幅图坐标)
* @param[out] rightROI 右目检测 ROI(全幅图坐标)
* @return 是否成功
*/
bool GetDetectROI(ROIRect& leftROI, ROIRect& rightROI);
/** /**
* @brief 启动自动检测模式进行摆镜扫描采集点云 * @brief 启动自动检测模式进行摆镜扫描采集点云
* @param[out] pointCloud 输出点云 * @param[out] pointCloud 输出点云