#include <opencv2/opencv.hpp>

// Convert PointXYZRGB to Point2f cv::Point2f convertPoint(const pcl::PointXYZRGB& point) { return cv::Point2f(point.x, point.y); }

// Fit ellipse using OpenCV cv::RotatedRect fitEllipse(const pcl::PointCloudpcl::PointXYZRGB::Ptr& cloud) { // Convert PointCloud to vector of Point2f std::vectorcv::Point2f points; for (const auto& point : cloud->points) { points.push_back(convertPoint(point)); }

// Fit ellipse using OpenCV
return cv::fitEllipse(points);

}

int main() { // Assuming touy is a PointCloudpcl::PointXYZRGB object filled with points

// Continue from your code
pcl::ModelCoefficients::Ptr coefficients(new pcl::ModelCoefficients());
coefficients->values.resize(4);
coefficients->values[0] = coefficients->values[1] = 1;
coefficients->values[2] = 0;
coefficients->values[3] = 1;

// --------------创建滤波器对象-------------------
pcl::ProjectInliers<pcl::PointXYZRGB> proj;
proj.setModelType(pcl::SACMODEL_PLANE);
proj.setInputCloud(touy);
proj.setModelCoefficients(coefficients);
proj.filter(*touy);

// Fit ellipse
cv::RotatedRect ellipse = fitEllipse(touy);

// Output major and minor axes
std::cout << "Major axis: " << ellipse.size.width << std::endl;
std::cout << "Minor axis: " << ellipse.size.height << std::endl;

return 0;
pclModelCoefficientsPtr coefficientsnew pclModelCoefficients;		coefficients-valuesresize4;		coefficients-values0 = coefficients-values1 = 1;		coefficients-values2 = 0;		coefficients-values3 = 1;		 ---

原文地址: https://www.cveoy.top/t/topic/iiTe 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录