[英]Suppress cout output from pcl registration
从这个问题: 重定向函数输出到/ dev / null我试图使用以下代码:
std::ofstream catchPCLStream("/dev/null");
std::streambuf *originalOutputBuffer = std::cout.rdbuf();
std::cout.rdbuf(catchPCLStream.rdbuf());
std::cerr.rdbuf(catchPCLStream.rdbuf());
icp_.align(dataCloudTransformedByIcp_, icpInternalUpdatePose_);
std::cout.rdbuf(originalOutputBuffer);
std::cerr.rdbuf(originalOutputBuffer);
但是我仍然从注册库中获得了大量的输出:
[pcl::IterativeClosestPoint::computeTransformation] Not enough correspondences found. Relax your threshold parameters.
这个输出有什么不同之处可以阻止它被它捕获吗? 是不是要cout
或cerr
?
由于PCL的多线程性质,标准管道cout
和cerr
不会工作。 相反,您需要使用PCL提供的内置功能来关闭控制台打印。
使用命令:
pcl::console::setVerbosityLevel(pcl::console::L_ALWAYS)
会把一切都关掉。 还有其他级别,可以在pcl::console
命名空间页面上找到更多信息:
http://docs.pointclouds.org/trunk/a02895.html#a1c1202ab693383b98842cb4f72ae625c
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.