fixed build with the latest version of freenect2

This commit is contained in:
matlabbe
2015-06-16 18:51:45 -04:00
parent feba562c1b
commit aa4005b266

View File

@@ -1229,7 +1229,7 @@ bool CameraFreenect2::init(const std::string & calibrationFolder)
//default registration params //default registration params
libfreenect2::Freenect2Device::IrCameraParams depthParams = dev_->getIrCameraParams(); libfreenect2::Freenect2Device::IrCameraParams depthParams = dev_->getIrCameraParams();
libfreenect2::Freenect2Device::ColorCameraParams colorParams = dev_->getColorCameraParams(); libfreenect2::Freenect2Device::ColorCameraParams colorParams = dev_->getColorCameraParams();
reg_ = new libfreenect2::Registration(&depthParams, &colorParams); reg_ = new libfreenect2::Registration(depthParams, colorParams);
// look for calibration files // look for calibration files
if(!calibrationFolder.empty()) if(!calibrationFolder.empty())
@@ -1312,7 +1312,20 @@ void CameraFreenect2::captureImage(cv::Mat & rgb, cv::Mat & depth, float & fx, f
if(dev_ && listener_) if(dev_ && listener_)
{ {
libfreenect2::FrameMap frames; libfreenect2::FrameMap frames;
if(listener_->waitForNewFrame(frames, 1000)) #ifndef LIBFREENECT2_THREADING_STDLIB
UDEBUG("Waiting for new frames... If it is stalled here, rtabmap should link on libusb of "
"libfreenect2, this can be done by setting LD_LIBRARY_PATH to "
"\"libfreenect2/depends/libusb/lib\"");
listener_->waitForNewFrame(frames);
#else
if(!listener_->waitForNewFrame(frames, 1000))
{
UWARN("CameraFreenect2: Failed to get frames! rtabmap should link on libusb of "
"libfreenect2, this can be done by setting LD_LIBRARY_PATH to "
"\"libfreenect2/depends/libusb/lib\"");
}
else
#endif
{ {
libfreenect2::Frame *rgbFrame = 0; libfreenect2::Frame *rgbFrame = 0;
libfreenect2::Frame *irFrame = 0; libfreenect2::Frame *irFrame = 0;
@@ -1378,7 +1391,9 @@ void CameraFreenect2::captureImage(cv::Mat & rgb, cv::Mat & depth, float & fx, f
{ {
//rgb + ir or rgb + depth //rgb + ir or rgb + depth
cv::Mat rgbMat(rgbFrame->height, rgbFrame->width, CV_8UC3, rgbFrame->data); cv::Mat rgbMatC4(rgbFrame->height, rgbFrame->width, CV_8UC4, rgbFrame->data);
cv::Mat rgbMat; // rtabmap uses 3 channels RGB
cv::cvtColor(rgbMatC4, rgbMat, CV_BGRA2BGR);
cv::flip(rgbMat, rgb, 1); cv::flip(rgbMat, rgb, 1);
if(stereoModel_.isValid()) if(stereoModel_.isValid())
@@ -1504,12 +1519,6 @@ void CameraFreenect2::captureImage(cv::Mat & rgb, cv::Mat & depth, float & fx, f
} }
listener_->release(frames); listener_->release(frames);
} }
else
{
UWARN("CameraFreenect2: Failed to get frames! rtabmap should link on libusb of "
"libfreenect2, this can be done by setting LD_LIBRARY_PATH to "
"\"libfreenect2/depends/libusb/lib\"");
}
} }
#else #else
UERROR("CameraFreenect2: RTAB-Map is not built with Freenect2 support!"); UERROR("CameraFreenect2: RTAB-Map is not built with Freenect2 support!");