当前位置:网站首页>octomap averageNodeColor函数说明

octomap averageNodeColor函数说明

2022-07-06 07:31:00 蓝羽飞鸟

averageNodeColor是ColorOcTreeNode中的函数,参数是x,y,z,r,g,b
在这里插入图片描述
但是官网上没说这函数具体是怎么average color的,于是只好从源码入手
根据官网提示,这个函数在Definition at line 144 of file ColorOcTree.h.

00144     ColorOcTreeNode* averageNodeColor(const float& x, const float& y, 
00145                                       const float& z, const unsigned char& r, 
00146                                       const unsigned char& g, const unsigned char& b) {
    
00147       OcTreeKey key;
00148       if (!this->coordToKeyChecked(point3d(x,y,z), key)) return NULL;
00149       return averageNodeColor(key,r,g,b);
00150     }

可以看到调用了averageNodeColor(key, r, g, b), 所以看这个重载函数的代码

00145   ColorOcTreeNode* ColorOcTree::averageNodeColor(const OcTreeKey& key, 
00146                                                  const unsigned char& r, 
00147                                                  const unsigned char& g, 
00148                                                  const unsigned char& b) {
    
00149     ColorOcTreeNode* n = search (key);
00150     if (n != 0) {
    
00151       if (n->isColorSet()) {
    
00152         ColorOcTreeNode::Color prev_color = n->getColor();
00153         n->setColor((prev_color.r + r)/2, (prev_color.g + g)/2, (prev_color.b + b)/2); 
00154       }
00155       else {
    
00156         n->setColor(r, g, b);
00157       }
00158     }
00159     return n;
00160   }

可以看到是每来一个新的颜色(r, g, b), 就把之前的颜色和新的颜色做平均,就相当于这个点上所有颜色求平均。

原网站

版权声明
本文为[蓝羽飞鸟]所创,转载请带上原文链接,感谢
https://blog.csdn.net/level_code/article/details/125620741