pclModelCoefficientsPtr coefficientsnew pclModelCoefficients; coefficients-valuesresize4; coefficients-values0 = coefficients-values1 = 1; coefficients-values2 = 0; coefficients-values3 = 1; ---
#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;
原文地址: https://www.cveoy.top/t/topic/iiTe 著作权归作者所有。请勿转载和采集!