¶Ô±ÈÐÂÎļþ |
| | |
| | | #define PCL_SILENCE_MALLOC_WARNING 1 |
| | | #include <pcl/visualization/cloud_viewer.h> |
| | | #include <pcl/point_types.h> |
| | | #include <pcl/io/pcd_io.h> |
| | | #include <atomic> |
| | | #include <thread> |
| | | |
| | | std::atomic<int> 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<pcl::PointXYZRGBA>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZRGBA>); |
| | | if (pcl::io::loadPCDFile<pcl::PointXYZRGBA>("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; |
| | | } |