mirror of
https://github.com/introlab/rtabmap.git
synced 2026-09-02 17:40:23 +08:00
Adding support for compressed input data and right color image. (#1463)
This commit is contained in:
@@ -82,7 +82,8 @@ cv::Mat StereoBM::computeDisparity(
|
||||
{
|
||||
UASSERT(!leftImage.empty() && !rightImage.empty());
|
||||
UASSERT(leftImage.cols == rightImage.cols && leftImage.rows == rightImage.rows);
|
||||
UASSERT((leftImage.type() == CV_8UC1 || leftImage.type() == CV_8UC3) && rightImage.type() == CV_8UC1);
|
||||
UASSERT(leftImage.type() == CV_8UC1 || leftImage.type() == CV_8UC3);
|
||||
UASSERT(rightImage.type() == CV_8UC1 || rightImage.type() == CV_8UC3);
|
||||
|
||||
cv::Mat leftMono;
|
||||
if(leftImage.channels() == 3)
|
||||
@@ -94,6 +95,16 @@ cv::Mat StereoBM::computeDisparity(
|
||||
leftMono = leftImage;
|
||||
}
|
||||
|
||||
cv::Mat rightMono;
|
||||
if(rightImage.channels() == 3)
|
||||
{
|
||||
cv::cvtColor(rightImage, rightMono, CV_BGR2GRAY);
|
||||
}
|
||||
else
|
||||
{
|
||||
rightMono = rightImage;
|
||||
}
|
||||
|
||||
cv::Mat disparity;
|
||||
#if CV_MAJOR_VERSION < 3
|
||||
cv::StereoBM stereo(cv::StereoBM::BASIC_PRESET);
|
||||
@@ -106,7 +117,7 @@ cv::Mat StereoBM::computeDisparity(
|
||||
stereo.state->textureThreshold = textureThreshold_;
|
||||
stereo.state->speckleWindowSize = speckleWindowSize_;
|
||||
stereo.state->speckleRange = speckleRange_;
|
||||
stereo(leftMono, rightImage, disparity, CV_16SC1);
|
||||
stereo(leftMono, rightMono, disparity, CV_16SC1);
|
||||
#else
|
||||
cv::Ptr<cv::StereoBM> stereo = cv::StereoBM::create();
|
||||
stereo->setBlockSize(blockSize_);
|
||||
@@ -119,7 +130,7 @@ cv::Mat StereoBM::computeDisparity(
|
||||
stereo->setSpeckleWindowSize(speckleWindowSize_);
|
||||
stereo->setSpeckleRange(speckleRange_);
|
||||
stereo->setDisp12MaxDiff(disp12MaxDiff_);
|
||||
stereo->compute(leftMono, rightImage, disparity);
|
||||
stereo->compute(leftMono, rightMono, disparity);
|
||||
#endif
|
||||
|
||||
if(minDisparity_>0)
|
||||
|
||||
@@ -71,7 +71,8 @@ cv::Mat StereoSGBM::computeDisparity(
|
||||
{
|
||||
UASSERT(!leftImage.empty() && !rightImage.empty());
|
||||
UASSERT(leftImage.cols == rightImage.cols && leftImage.rows == rightImage.rows);
|
||||
UASSERT((leftImage.type() == CV_8UC1 || leftImage.type() == CV_8UC3) && rightImage.type() == CV_8UC1);
|
||||
UASSERT(leftImage.type() == CV_8UC1 || leftImage.type() == CV_8UC3);
|
||||
UASSERT(rightImage.type() == CV_8UC1 || rightImage.type() == CV_8UC3);
|
||||
|
||||
cv::Mat leftMono;
|
||||
if(leftImage.channels() == 3)
|
||||
@@ -83,6 +84,16 @@ cv::Mat StereoSGBM::computeDisparity(
|
||||
leftMono = leftImage;
|
||||
}
|
||||
|
||||
cv::Mat rightMono;
|
||||
if(rightImage.channels() == 3)
|
||||
{
|
||||
cv::cvtColor(rightImage, rightMono, CV_BGR2GRAY);
|
||||
}
|
||||
else
|
||||
{
|
||||
rightMono = rightImage;
|
||||
}
|
||||
|
||||
cv::Mat disparity;
|
||||
#if CV_MAJOR_VERSION < 3
|
||||
cv::StereoSGBM stereo(
|
||||
@@ -97,7 +108,7 @@ cv::Mat StereoSGBM::computeDisparity(
|
||||
speckleWindowSize_,
|
||||
speckleRange_,
|
||||
mode_==1);
|
||||
stereo(leftMono, rightImage, disparity);
|
||||
stereo(leftMono, rightMono, disparity);
|
||||
#else
|
||||
cv::Ptr<cv::StereoSGBM> stereo = cv::StereoSGBM::create(
|
||||
minDisparity_,
|
||||
@@ -111,7 +122,7 @@ cv::Mat StereoSGBM::computeDisparity(
|
||||
speckleWindowSize_,
|
||||
speckleRange_,
|
||||
mode_);
|
||||
stereo->compute(leftMono, rightImage, disparity);
|
||||
stereo->compute(leftMono, rightMono, disparity);
|
||||
#endif
|
||||
|
||||
if(minDisparity_>0)
|
||||
|
||||
Reference in New Issue
Block a user