Я пытаюсь получить вершины облака точек, но независимо от того, что я делаю, я всегда получаю [x = 0, y = 0, z = 0] для всех точек. Я работаю на виртуальной машине VMware Ubuntu 18.04.3, использую реальную версию 2.31.0 и использую файл .bag, который был записан на камеру realsense d435i.
Мое тестовое приложение:
Приложение:
#include <librealsense2/rs.hpp>
#include <algorithm>
#include <iostream>
int main(int argc, char *argv[])
{
rs2::pointcloud pc;
rs2::points points;
rs2::pipeline pipe;
rs2::config cfg;
cfg.enable_device_from_file("recording.bag");
pipe.start(cfg);
int frame_off_interest = 100;
while (1)
{
if (frame_off_interest <= 0)
{
auto frames = pipe.wait_for_frames();
auto color = frames.get_color_frame();
auto depth = frames.get_depth_frame();
std::cout << "Measurement at [300, 300] = " << std::to_string(depth.get_distance(300, 300)) << std::endl;
pc.map_to(color);
points = pc.calculate(depth);
auto vertices = points.get_vertices();
std::cout << "Fond " << std::to_string(points.size()) << " Vertices" << std::endl;
int vertex_count = 0;
for (int i = 0; i < points.size(); i++)
{
if (vertices[i].x > 0.0 || vertices[i].y > 0.0 || vertices[i].z > 0.0)
{
vertex_count++;
}
}
std::cout << "Count Vertices that are not (0, 0, 0) = " << std::to_string(vertex_count) << std::endl;
break;
}
frame_off_interest--;
}
return EXIT_SUCCESS;
}
CMakeLists.txt:
cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
project(LRS_PCL)
#used for intelisense by vscode
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
find_package(realsense2 REQUIRED)
include_directories(${realsense2_INCLUDE_DIRS})
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED TRUE)
add_executable (LRS_PCL rs-pointcloud.cpp)
target_link_libraries (LRS_PCL ${realsense2_LIBRARY})
Когда я выполняю В тестовом приложении карта глубины содержит данные, но я всегда получаю [x = 0, y = 0, z = 0] для всех точек. Смотрите вывод моей тестовой заявки ниже:
Measurement at [300, 300] = 2.634000
Fond 921600 Vertices
Count Vertices that are not (0, 0, 0) = 0
Буду признателен за вашу помощь.