点云置平:基于点云法向量

将点云置平(法向量),方便做一些其他处理,与XOY平面平行

normal为法向量,z_normal为置平后的法向量,通过这两个向量计算转换矩阵

Eigen::Affine3f transform_Plane_To_XOYPlane(CP& cloudIn, vector<float> normal_vec) {
    pcl::console::TicToc time; time.tic();
    int cloud_size = cloudIn->size();
    CP cloudAfter(new CloudT);

    Vector3f normal(normal_vec[0], normal_vec[1], normal_vec[2]);
    Vector3f z_normal = Vector3f::UnitZ();                    //(0.0, 0.0, 1.0);


    Vector3f rotation = (z_normal.cross(normal)).normalize();
    float theta = -acos(z_normal.dot(normal));
    Eigen::Affine3f transformXOY = Eigen::Affine3f::Identity();
    transformXOY.rotate(Eigen::AngleAxisf(theta, rotation));

    pcl::transformPointCloud(*cloudIn, *cloudAfter, transformXOY);
    cout << "旋转时间:" << time.toc() << "ms" << endl;

    cloudIn = cloudAfter;
    return transformXOY;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值