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构成