c_cpp 使用PCLVisualizer在多个Windows上绘制点云
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 使用PCLVisualizer在多个Windows上绘制点云相关的知识,希望对你有一定的参考价值。
#include "stdafx.h"
#include <array>
#include <string>
// Disable Error C4996 that occur when using Boost.Signals2.
#ifdef _DEBUG
#define _SCL_SECURE_NO_WARNINGS
#endif
#include "kinect2_grabber.h"
#include <pcl/visualization/pcl_visualizer.h>
boost::mutex mutex;
int _tmain( int argc, _TCHAR* argv[] )
{
std::array<std::shared_ptr<pcl::visualization::PCLVisualizer>, 2> viewer;
for( int count = 0; count < viewer.size(); count++ ){
viewer[count] = std::make_shared<pcl::visualization::PCLVisualizer>();
std::string name = "Viewer" + std::to_string( count + 1 );
viewer[count]->setWindowName( name.c_str() );
}
pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr cloud;
boost::function<void( const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr& )> function =
[&cloud]( const pcl::PointCloud<pcl::PointXYZRGB>::ConstPtr &ptr ){
boost::mutex::scoped_lock lock( mutex );
cloud = ptr;
};
boost::shared_ptr<pcl::Grabber> grabber = boost::make_shared<pcl::Kinect2Grabber>();
boost::signals2::connection connection = grabber->registerCallback( function );
grabber->start();
bool stop = false;
while( 1 ){
for( int count = 0; count < viewer.size(); count++ ){
if( viewer[count]->wasStopped() ){
stop = true;
break;
}
viewer[count]->spinOnce();
if( cloud ){
if( !viewer[count]->updatePointCloud( cloud, "cloud" ) ){
viewer[count]->addPointCloud( cloud, "cloud" );
viewer[count]->resetCameraViewpoint( "cloud" );
}
}
}
if( GetKeyState( VK_ESCAPE ) < 0 || stop ){
break;
}
}
grabber->stop();
return 0;
}
以上是关于c_cpp 使用PCLVisualizer在多个Windows上绘制点云的主要内容,如果未能解决你的问题,请参考以下文章
c_cpp 使用PCLVisualizer和Kinect v2 Grabber绘制点云
c_cpp 将渲染图像转换为来自pcl :: visualization :: PCLVisualizer的cv :: Mat
c_cpp 给定一个字符串s和一个单词字典dict,确定s是否可以被分割成一个或多个字典的空格分隔序列w
pcl-qt使用QVTKWidget 与PCLVisualizer 显示雷达点云
怎么将pclvisualizer嵌入qt
c_cpp 给定一个2D板和一个单词,找出该单词是否存在于网格中。该单词可以由顺序相邻的单元格的字母w构成