添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
粗眉毛的松树  ·  c# - Syncfusion WPF ...·  1 年前    · 
傻傻的作业本  ·  python - What is the ...·  1 年前    · 

点云投影需要用到pcl::ModelCoefficients,定义一个平面。实验过程中发现pcl::ModelCoefficients设置4个参数分别为ax+by+cz+d=0的a,b,c,d时,投影后的坐标是错误的(创建了一个近似于平行xy平面的平面,其z轴坐标与定义的平面高度不一致)

因为pcl老文档404了,查了很久都没有查到pcl::ModelCoefficients的Plane定义。

实验中发现对pcl::ModelCoefficients中的value1,value2,value3等比例缩放,value4不变的情况下,平面投影结果不变。所以猜测value1,value2,value3是经过比例缩放再和value4相加的,很可能是单位向量,实验后发现确实如此。

也就是说 ax+by+cz+d=0的平面,在pcl::ModelCoefficients中定义时,value1=a,value2=b,value3=c,value4=d/(a**2+b**2+c**2)**0.5。

---------------------

顺便存以下三点确定平面法向量的代码

struct Plane
  float a;
  float b;
  float c;
  float d;
int compute_plane(pcl::PointCloud<pcl::PointXYZ>::Ptr PlanePoints,Plane *pm)
    float x[3];
    float y[3];
    float z[3];
    for(int i=0;i<3;i++)
      x[i]=PlanePoints->points[i].x;
      y[i]=PlanePoints->points[i].y;
      z[i]=PlanePoints->points[i].z;
    pm->a=(y[1]-y[0])*(z[2]-z[0])-(y[2]-y[0])*(z[1]-z[0]);
    pm->b=(z[1]-z[0])*(x[2]-x[0])-(z[2]-z[0])*(x[1]-x[0]);
    pm->c=(x[1]-x[0])*(y[2]-y[0])-(x[2]-x[0])*(y[1]-y[0]);
    pm->d=-x[0]*pm->a-y[0]*pm->b-z[0]*pm->c;
    printf("%f,%f,%f,%f\n",pm->a,pm->b,pm->c,pm->d);//(a,b,c)是法向量
                    点云投影需要用到pcl::ModelCoefficients,定义一个平面。实验过程中发现pcl::ModelCoefficients设置4个参数分别为ax+by+cz+d=0的a,b,c,d时,投影后的坐标是错误的(创建了一个近似于平行xy平面的平面,其z轴坐标与定义的平面高度不一致)因为pcl老文档404了,查了很久都没有查到pcl::ModelCoefficients的Plane定义。实验中发现对pcl::ModelCoefficients中的value1,value2,value3等比例缩放
                    neho: 
                    注意啦!cv2中的findContours现在只返回两个值了contours and hierarchy,应该删掉第一个了!否则报错ValueError: need more than 2 values to unpack 其实它只要两个返回值
我用的是4.1版本的
                关于解决cv2.findContours返回值too many values to unpack (expected 2)的问题
                    我命倾尘: 
                    问题解决,谢谢