PCL 更改起始相机位置
PCL Change Starting Camera position
我正在尝试使用 PCL 库(我是新手)从从 .las
文件获得的无组织点云中获取图像,该文件稍后被翻译成.pcd
文件供 PCL 库使用。为了可视化点云,我使用了此处的示例代码:https://github.com/UnaNancyOwen/Tutorials/blob/master/tutorials/range_image_border_extraction/range_image_border_extraction.cpp
对于.las
到.pcd
我使用了https://github.com/murtiad/las2pcd
默认情况下相机位置不正确(我需要用鼠标与可视化工具交互才能到达正确的位置)但质量是正确的,我可以使用 saveScreenshot
方法。
如果有任何建议,我将不胜感激,我是 运行 Ubuntu 18.04 和 pcl 1.8
。还查看了每个示例和现有的 post 我已经能够在 pcl-users.org 上找到。
我已经尝试过 OpenCV,但据我所知,它的质量不适合无组织的点云。
我面临的情况是:
一个。如果我通过调用这些函数中的任何一个(或所有)来修改最轻微的相机参数,质量就会下降并且看起来像没有聚焦:
pcl::visualization::PCLVisualizer viewer ("3D Viewer");
viewer.setBackgroundColor (1, 1, 1);
viewer.addCoordinateSystem (1.0f, "reference");
/* Evil functions */
viewer.initCameraParameters();
viewer.setCameraPosition(0, -30, 0, 0, 0, 0, 0, 0, 1);
viewer.setCameraFieldOfView(0.523599);
viewer.setCameraClipDistances(0.00522511, 50);
b。如果我不修改任何参数,质量仍然存在,但我需要与我打算避免的鼠标进行交互。
c。即使在与鼠标交互并修改视图后,相机参数仍保持不变(实际上在循环 PCL: Visualize a point cloud 上使用了这个 post ):
viewer.getCameras(cam);
//--------------------
// -----Main loop-----
//--------------------
while (!viewer.wasStopped()) {
// range_image_borders_widget->spinOnce ();
viewer.spinOnce();
pcl_sleep(0.5);
cout << "Cam: " << endl
<< " - pos: (" << cam[0].pos[0] << ", " << cam[0].pos[1] << ", " << cam[0].pos[2] << ")" << endl
<< " - view: (" << cam[0].view[0] << ", " << cam[0].view[1] << ", " << cam[0].view[2] << ")" << endl
<< " - focal: (" << cam[0].focal[0] << ", " << cam[0].focal[1] << ", " << cam[0].focal[2] << ")" << endl
<< " - fovy: (" << cam[0].fovy << " - clip: (" << cam[0].clip[0] << " , " << cam[0].clip[1] << ")" << endl;
}
问题是将相机定位 180º 并排序点云导致高度 = 1 并且实际上从两个角度看颜色和形状相同。
有效地将"Evil Code"修改为下面这段代码,"fixed the issue":
viewer.initCameraParameters();
viewer.setCameraPosition(0, 30, 0, 0, 0, 0, 0, 0, 1);
viewer.setCameraFieldOfView(0.523599);
viewer.setCameraClipDistances(0.00522511, 50);
我正在尝试使用 PCL 库(我是新手)从从 .las
文件获得的无组织点云中获取图像,该文件稍后被翻译成.pcd
文件供 PCL 库使用。为了可视化点云,我使用了此处的示例代码:https://github.com/UnaNancyOwen/Tutorials/blob/master/tutorials/range_image_border_extraction/range_image_border_extraction.cpp
对于.las
到.pcd
我使用了https://github.com/murtiad/las2pcd
默认情况下相机位置不正确(我需要用鼠标与可视化工具交互才能到达正确的位置)但质量是正确的,我可以使用 saveScreenshot
方法。
如果有任何建议,我将不胜感激,我是 运行 Ubuntu 18.04 和 pcl 1.8
。还查看了每个示例和现有的 post 我已经能够在 pcl-users.org 上找到。
我已经尝试过 OpenCV,但据我所知,它的质量不适合无组织的点云。
我面临的情况是:
一个。如果我通过调用这些函数中的任何一个(或所有)来修改最轻微的相机参数,质量就会下降并且看起来像没有聚焦:
pcl::visualization::PCLVisualizer viewer ("3D Viewer");
viewer.setBackgroundColor (1, 1, 1);
viewer.addCoordinateSystem (1.0f, "reference");
/* Evil functions */
viewer.initCameraParameters();
viewer.setCameraPosition(0, -30, 0, 0, 0, 0, 0, 0, 1);
viewer.setCameraFieldOfView(0.523599);
viewer.setCameraClipDistances(0.00522511, 50);
b。如果我不修改任何参数,质量仍然存在,但我需要与我打算避免的鼠标进行交互。
c。即使在与鼠标交互并修改视图后,相机参数仍保持不变(实际上在循环 PCL: Visualize a point cloud 上使用了这个 post ):
viewer.getCameras(cam);
//--------------------
// -----Main loop-----
//--------------------
while (!viewer.wasStopped()) {
// range_image_borders_widget->spinOnce ();
viewer.spinOnce();
pcl_sleep(0.5);
cout << "Cam: " << endl
<< " - pos: (" << cam[0].pos[0] << ", " << cam[0].pos[1] << ", " << cam[0].pos[2] << ")" << endl
<< " - view: (" << cam[0].view[0] << ", " << cam[0].view[1] << ", " << cam[0].view[2] << ")" << endl
<< " - focal: (" << cam[0].focal[0] << ", " << cam[0].focal[1] << ", " << cam[0].focal[2] << ")" << endl
<< " - fovy: (" << cam[0].fovy << " - clip: (" << cam[0].clip[0] << " , " << cam[0].clip[1] << ")" << endl;
}
问题是将相机定位 180º 并排序点云导致高度 = 1 并且实际上从两个角度看颜色和形状相同。
有效地将"Evil Code"修改为下面这段代码,"fixed the issue":
viewer.initCameraParameters();
viewer.setCameraPosition(0, 30, 0, 0, 0, 0, 0, 0, 1);
viewer.setCameraFieldOfView(0.523599);
viewer.setCameraClipDistances(0.00522511, 50);