#define PCL_SILENCE_MALLOC_WARNING 1 #include #include #include #include #include std::atomic user_data(0); void viewerOneOff(pcl::visualization::PCLVisualizer& viewer) { viewer.setBackgroundColor(0.1, 0.1, 0.1); // 深灰背景更易观察 viewer.addCoordinateSystem(1.0); // 添加坐标系 viewer.initCameraParameters(); // 初始化相机参数 std::cout << "Initial setup complete." << std::endl; } void viewerPsycho(pcl::visualization::PCLVisualizer& viewer) { static unsigned count = 0; viewer.removeShape("text"); viewer.addText("Frame: " + std::to_string(count++), 20, 30, 20, 1, 1, 1, "text"); user_data.fetch_add(1, std::memory_order_relaxed); } int main() { // 加载点云(带错误处理) pcl::PointCloud::Ptr cloud(new pcl::PointCloud); if (pcl::io::loadPCDFile("sampledata.pcd", *cloud) == -1) { std::cerr << "Error: Failed to load PCD file!" << std::endl; return -1; } // 创建可视化器 pcl::visualization::CloudViewer viewer("Enhanced Cloud Viewer"); // 显示点云 viewer.showCloud(cloud); // 设置回调函数 viewer.runOnVisualizationThreadOnce(viewerOneOff); viewer.runOnVisualizationThread(viewerPsycho); // 主循环 while (!viewer.wasStopped()) { // 示例处理逻辑(线程安全) user_data.fetch_add(1, std::memory_order_relaxed); std::this_thread::sleep_for(std::chrono::milliseconds(50)); } return 0; }