동일한 창에서 시각화하려는 두 개의 포인트 클라우드가 있습니다.
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>
int main ()
{
pcl::visualization::CloudViewer viewer("Cloud Viewer");
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr body (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("body.pcd", *body);
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr head (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("head.pcd", *head);
viewer.showCloud (body);
viewer.showCloud (head);
while (!viewer.wasStopped ())
{
}
return 0;
}
마지막 PCD 파일 만 볼 수 있습니다.
이 데이터에 대해 다른 처리를해야하므로 pcd_viewer 도구를 사용하고 싶지 않습니다.
댓글에 대해
"좋아요. 곧 확인하겠습니다. cloud_viewer API를 사용하여 카메라 매개 변수와 배경색을 설정하도록 말씀해 주시겠습니까?"
을 사용하여이 작업을 수행 할 수 있는지 100 % 확실하지 않습니다 pcl::visualization::CloudViewer
. 그러나 코드를 이동 pcl::visualization::PCLVisualizer
하면 할 수 있습니다 viewer.setBackgroundColor(double red,double green,double blue)
(값 범위 0..1. 카메라를 설정하려면). 카메라의 경우 pcl::visualization::PCLVisualizer::setCameraPosition
. CloudViewer에서 PCLVisualizer로 코드를 옮기는 것은 매우 쉽습니다.
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/pcl_visualizer.h>
int main ()
{
pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr body (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("body.pcd", *body);
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr head (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("head.pcd", *head);
viewer.addPointCloud (body,"body");// note that before it was showCloud
viewer.addPointCloud (head,"head");// note that before it was showCloud
viewer.spin();
return 0;
}
편집 Ther는 이것을 수행하는 방법입니다. 여기 를 살펴보면 또는 함수를 pcl::visualization::PCLVisualizer
사용하여의 모든 기능을 실행할 수 있음을 알 수 있습니다 . 이를 위해 사용하는 모든 부분 을 수행하고 또는에 전달 하는 함수를 만들어야합니다 .pcl::visualization::CloudViewer::runOnVisualizationThreadOnce
pcl::visualization::CloudViewer::runOnVisualizationThread
pcl::visualization::PCLVisualizer
CloudViewer::runOnVisualizationThreadOnce
CloudViewer::runOnVisualizationThread
예를 들면
#include <pcl/io/io.h>
#include <pcl/io/pcd_io.h>
#include <pcl/visualization/cloud_viewer.h>
void
setBackground (pcl::visualization::PCLVisualizer& viewer)
{
viewer.setBackgroundColor (1.0, 0.5, 1.0);
}
int main ()
{
pcl::visualization::PCLVisualizer viewer("Cloud Viewer");
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr body (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("body.pcd", *body);
pcl::PointCloud<pcl::PointXYZRGBA>::Ptr head (new pcl::PointCloud<pcl::PointXYZRGBA>);
pcl::io::loadPCDFile ("head.pcd", *head);
viewer.showCloud (body,"body");
viewer.showCloud (head,"head");
viewer.runOnVisualizationThreadOnce(setBackground);
while (!viewer.wasStopped ())
{
}
return 0;
}
유일한 문제는 pcl::visualization::PCLVisualizer
우리가 만든 함수에서 사용하려는 함수에 잠재적으로 인수를 전달할 수있는 방법을 알지 못한다는 것입니다 (이전 예제 pcl::visualization::PCLVisualizer::setBackgroundColor
에서 setBackground
.이를 위해 직접 사용하는 pcl::visualization::PCLVisualizer
것이 훨씬 낫다고 생각 합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다