#ifndef POINTCLOUDPROCESSOR_H #define POINTCLOUDPROCESSOR_H #include #include #include #include #include class PointCloudProcessor : public QObject { Q_OBJECT public: explicit PointCloudProcessor(QObject *parent = nullptr); ~PointCloudProcessor(); // 初始化OpenCL bool initializeOpenCL(); // 设置相机内参 void setCameraIntrinsics(float fx, float fy, float cx, float cy); // 设置Z缩放因子 void setZScaleFactor(float scale); // 将深度数据转换为点云(使用OpenCL GPU加速) void processDepthData(const QByteArray &depthData, uint32_t blockId); // 处理已经计算好的点云数据(x,y,z格式) void processPointCloudData(const QByteArray &cloudData, uint32_t blockId); signals: void pointCloudReady(pcl::PointCloud::Ptr cloud, uint32_t blockId); void errorOccurred(const QString &error); private: // 清理OpenCL资源 void cleanupOpenCL(); // 相机内参 float m_fx; float m_fy; float m_cx; float m_cy; // Z缩放因子 float m_zScale; // 图像尺寸 int m_imageWidth; int m_imageHeight; int m_totalPoints; // OpenCL资源 cl_platform_id m_platform; cl_device_id m_device; cl_context m_context; cl_command_queue m_queue; cl_program m_program; cl_kernel m_kernel; cl_mem m_depthBuffer; cl_mem m_xyzBuffer; bool m_clInitialized; }; #endif // POINTCLOUDPROCESSOR_H