mirror of
https://github.com/introlab/rtabmap_ros.git
synced 2026-10-04 08:47:45 +08:00
Merge pull request #108 from lesterlo/nvidia_jetson_fix
Improve Freenect2 performance
This commit is contained in:
@@ -1179,6 +1179,9 @@ bool CameraFreenect2::init(const std::string & calibrationFolder, const std::str
|
|||||||
}
|
}
|
||||||
|
|
||||||
libfreenect2::PacketPipeline * pipeline;
|
libfreenect2::PacketPipeline * pipeline;
|
||||||
|
#ifdef LIBFREENECT2_WITH_CUDA_SUPPORT
|
||||||
|
pipeline = new libfreenect2::CudaPacketPipeline();
|
||||||
|
#else
|
||||||
#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
|
#ifdef LIBFREENECT2_WITH_OPENGL_SUPPORT
|
||||||
pipeline = new libfreenect2::OpenGLPacketPipeline();
|
pipeline = new libfreenect2::OpenGLPacketPipeline();
|
||||||
#else
|
#else
|
||||||
@@ -1187,6 +1190,7 @@ bool CameraFreenect2::init(const std::string & calibrationFolder, const std::str
|
|||||||
#else
|
#else
|
||||||
pipeline = new libfreenect2::CpuPacketPipeline();
|
pipeline = new libfreenect2::CpuPacketPipeline();
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(deviceId_ <= 0)
|
if(deviceId_ <= 0)
|
||||||
@@ -1406,7 +1410,15 @@ SensorData CameraFreenect2::captureImage(CameraInfo * info)
|
|||||||
{
|
{
|
||||||
cv::Mat rgbMatC4((int)rgbFrame->height, (int)rgbFrame->width, CV_8UC4, rgbFrame->data);
|
cv::Mat rgbMatC4((int)rgbFrame->height, (int)rgbFrame->width, CV_8UC4, rgbFrame->data);
|
||||||
cv::Mat rgbMat; // rtabmap uses 3 channels RGB
|
cv::Mat rgbMat; // rtabmap uses 3 channels RGB
|
||||||
cv::cvtColor(rgbMatC4, rgbMat, CV_BGRA2BGR);
|
#ifdef LIBFREENECT2_WITH_TEGRAJPEG_SUPPORT
|
||||||
|
|
||||||
|
cv::cvtColor(rgbMatC4, rgbMat, CV_RGBA2BGR);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
cv::cvtColor(rgbMatC4, rgbMat, CV_BGRA2BGR);
|
||||||
|
|
||||||
|
#endif
|
||||||
cv::flip(rgbMat, rgb, 1);
|
cv::flip(rgbMat, rgb, 1);
|
||||||
|
|
||||||
//rectify color
|
//rectify color
|
||||||
@@ -1455,7 +1467,15 @@ SensorData CameraFreenect2::captureImage(CameraInfo * info)
|
|||||||
{
|
{
|
||||||
cv::Mat rgbMatC4((int)rgbFrame->height, (int)rgbFrame->width, CV_8UC4, rgbFrame->data);
|
cv::Mat rgbMatC4((int)rgbFrame->height, (int)rgbFrame->width, CV_8UC4, rgbFrame->data);
|
||||||
cv::Mat rgbMat; // rtabmap uses 3 channels RGB
|
cv::Mat rgbMat; // rtabmap uses 3 channels RGB
|
||||||
cv::cvtColor(rgbMatC4, rgbMat, CV_BGRA2BGR);
|
#ifdef LIBFREENECT2_WITH_TEGRAJPEG_SUPPORT
|
||||||
|
|
||||||
|
cv::cvtColor(rgbMatC4, rgbMat, CV_RGB2BGR);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
cv::cvtColor(rgbMatC4, rgbMat, CV_BGRA2BGR);
|
||||||
|
|
||||||
|
#endif
|
||||||
cv::flip(rgbMat, rgb, 1);
|
cv::flip(rgbMat, rgb, 1);
|
||||||
|
|
||||||
cv::Mat((int)irFrame->height, (int)irFrame->width, CV_32FC1, irFrame->data).convertTo(depth, CV_16U, 1);
|
cv::Mat((int)irFrame->height, (int)irFrame->width, CV_32FC1, irFrame->data).convertTo(depth, CV_16U, 1);
|
||||||
@@ -1564,7 +1584,15 @@ SensorData CameraFreenect2::captureImage(CameraInfo * info)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// rtabmap uses 3 channels RGB
|
// rtabmap uses 3 channels RGB
|
||||||
cv::cvtColor(rgbMatBGRA, rgb, CV_BGRA2BGR);
|
#ifdef LIBFREENECT2_WITH_TEGRAJPEG_SUPPORT
|
||||||
|
|
||||||
|
cv::cvtColor(rgbMatBGRA, rgb, CV_RGBA2BGR);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
cv::cvtColor(rgbMatBGRA, rgb, CV_BGRA2BGR);
|
||||||
|
|
||||||
|
#endif
|
||||||
cv::flip(rgb, rgb, 1);
|
cv::flip(rgb, rgb, 1);
|
||||||
}
|
}
|
||||||
else //register depth to color (OLD WAY)
|
else //register depth to color (OLD WAY)
|
||||||
@@ -1578,7 +1606,15 @@ SensorData CameraFreenect2::captureImage(CameraInfo * info)
|
|||||||
rgbMatBGRA = tmp;
|
rgbMatBGRA = tmp;
|
||||||
}
|
}
|
||||||
// rtabmap uses 3 channels RGB
|
// rtabmap uses 3 channels RGB
|
||||||
cv::cvtColor(rgbMatBGRA, rgb, CV_BGRA2BGR);
|
#ifdef LIBFREENECT2_WITH_TEGRAJPEG_SUPPORT
|
||||||
|
|
||||||
|
cv::cvtColor(rgbMatBGRA, rgb, CV_RGBA2BGR);
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
cv::cvtColor(rgbMatC4, rgb, CV_BGRA2BGR);
|
||||||
|
|
||||||
|
#endif
|
||||||
cv::flip(rgb, rgb, 1);
|
cv::flip(rgb, rgb, 1);
|
||||||
|
|
||||||
cv::Mat depthFrameMat = cv::Mat((int)depthFrame->height, (int)depthFrame->width, CV_32FC1, depthFrame->data);
|
cv::Mat depthFrameMat = cv::Mat((int)depthFrame->height, (int)depthFrame->width, CV_32FC1, depthFrame->data);
|
||||||
|
|||||||
Reference in New Issue
Block a user