mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-03 16:27:46 +08:00
util3d::cloud[RGB]FromSensorData(): supporting roi ratios for stereo images
This commit is contained in:
@@ -892,12 +892,8 @@ IF(ORB_SLAM2_FOUND)
|
||||
MESSAGE(STATUS " With ORB_SLAM2 = YES (License: GPLv3)")
|
||||
ELSEIF(NOT WITH_ORB_SLAM2)
|
||||
MESSAGE(STATUS " With ORB_SLAM2 = NO (WITH_ORB_SLAM2=OFF)")
|
||||
ELSEIF(G2O_FOUND AND RealSense_FOUND)
|
||||
MESSAGE(STATUS " With ORB_SLAM2 = NO (WITH_G2O should be OFF as ORB_SLAM2 uses its own g2o version, WITH_REALSENSE should also be off to avoid eigen errors)")
|
||||
ELSEIF(G2O_FOUND)
|
||||
MESSAGE(STATUS " With ORB_SLAM2 = NO (WITH_G2O should be OFF as ORB_SLAM2 uses its own g2o version)")
|
||||
ELSEIF(RealSense_FOUND)
|
||||
MESSAGE(STATUS " With ORB_SLAM2 = NO (WITH_REALSENSE should be off to avoid eigen errors)")
|
||||
ELSE()
|
||||
MESSAGE(STATUS " With ORB_SLAM2 = NO (ORB_SLAM2 not found, make sure environment variable ORB_SLAM2_ROOT_DIR is set)")
|
||||
ENDIF()
|
||||
|
||||
+69
-5
@@ -957,9 +957,40 @@ pcl::PointCloud<pcl::PointXYZ>::Ptr RTABMAP_EXP cloudFromSensorData(
|
||||
leftMono = sensorData.imageRaw();
|
||||
}
|
||||
|
||||
cv::Mat right(sensorData.rightRaw());
|
||||
StereoCameraModel model = sensorData.stereoCameraModel();
|
||||
if( roiRatios.size() == 4 &&
|
||||
((roiRatios[0] > 0.0f && roiRatios[0] <= 1.0f) ||
|
||||
(roiRatios[1] > 0.0f && roiRatios[1] <= 1.0f) ||
|
||||
(roiRatios[2] > 0.0f && roiRatios[2] <= 1.0f) ||
|
||||
(roiRatios[3] > 0.0f && roiRatios[3] <= 1.0f)))
|
||||
{
|
||||
cv::Rect roi = util2d::computeRoi(leftMono, roiRatios);
|
||||
if( roi.width%decimation==0 &&
|
||||
roi.height%decimation==0)
|
||||
{
|
||||
leftMono = cv::Mat(leftMono, roi);
|
||||
right = cv::Mat(right, roi);
|
||||
model.roi(roi);
|
||||
}
|
||||
else
|
||||
{
|
||||
UERROR("Cannot apply ROI ratios [%f,%f,%f,%f] because resulting "
|
||||
"dimension (left=%dx%d) cannot be divided exactly "
|
||||
"by decimation parameter (%d). Ignoring ROI ratios...",
|
||||
roiRatios[0],
|
||||
roiRatios[1],
|
||||
roiRatios[2],
|
||||
roiRatios[3],
|
||||
roi.width,
|
||||
roi.height,
|
||||
decimation);
|
||||
}
|
||||
}
|
||||
|
||||
cloud = cloudFromDisparity(
|
||||
util2d::disparityFromStereoImages(leftMono, sensorData.rightRaw(), stereoParameters),
|
||||
sensorData.stereoCameraModel(),
|
||||
util2d::disparityFromStereoImages(leftMono, right, stereoParameters),
|
||||
model,
|
||||
decimation,
|
||||
maxDepth,
|
||||
minDepth,
|
||||
@@ -1091,10 +1122,43 @@ pcl::PointCloud<pcl::PointXYZRGB>::Ptr RTABMAP_EXP cloudRGBFromSensorData(
|
||||
{
|
||||
//stereo
|
||||
UDEBUG("");
|
||||
|
||||
cv::Mat left(sensorData.imageRaw());
|
||||
cv::Mat right(sensorData.rightRaw());
|
||||
StereoCameraModel model = sensorData.stereoCameraModel();
|
||||
if( roiRatios.size() == 4 &&
|
||||
((roiRatios[0] > 0.0f && roiRatios[0] <= 1.0f) ||
|
||||
(roiRatios[1] > 0.0f && roiRatios[1] <= 1.0f) ||
|
||||
(roiRatios[2] > 0.0f && roiRatios[2] <= 1.0f) ||
|
||||
(roiRatios[3] > 0.0f && roiRatios[3] <= 1.0f)))
|
||||
{
|
||||
cv::Rect roi = util2d::computeRoi(left, roiRatios);
|
||||
if( roi.width%decimation==0 &&
|
||||
roi.height%decimation==0)
|
||||
{
|
||||
left = cv::Mat(left, roi);
|
||||
right = cv::Mat(right, roi);
|
||||
model.roi(roi);
|
||||
}
|
||||
else
|
||||
{
|
||||
UERROR("Cannot apply ROI ratios [%f,%f,%f,%f] because resulting "
|
||||
"dimension (left=%dx%d) cannot be divided exactly "
|
||||
"by decimation parameter (%d). Ignoring ROI ratios...",
|
||||
roiRatios[0],
|
||||
roiRatios[1],
|
||||
roiRatios[2],
|
||||
roiRatios[3],
|
||||
roi.width,
|
||||
roi.height,
|
||||
decimation);
|
||||
}
|
||||
}
|
||||
|
||||
cloud = cloudFromStereoImages(
|
||||
sensorData.imageRaw(),
|
||||
sensorData.rightRaw(),
|
||||
sensorData.stereoCameraModel(),
|
||||
left,
|
||||
right,
|
||||
model,
|
||||
decimation,
|
||||
maxDepth,
|
||||
minDepth,
|
||||
|
||||
Reference in New Issue
Block a user