我有一个3d点云,使用pcl::PointCloud::Ptr,我想计算每个颜色层R,G,B的直方图。
也许有一个类可以直接计算直方图?谢谢
发布于 2017-09-11 11:43:23
有了pcl::PointCloud<pcl::PointXYZRGBA>::Ptr cloud
,计算每个颜色层直方图的一种解决方案如下
const int nbins=8;
const int ndim=3;
const Eigen::Vector3f maxrgb(255.0,255.0,255.0);
std::vector< std::vector<int> > histog(nbins, std::vector<int>(ndim));
Eigen::Vector3f divisor_rgb = maxrgb/(float)nbins;
for (int i=0; i< cloud->size() ; i++)
Eigen::Vector3i tricolor = cloud->at(i).getRGBVector3i();
Eigen::Vector3f bin_tricolor = floor(tricolor.cast<float>().array()/divisor_rgb.array());
for (int k=0;k<ndim;k++)
histog[(int)bin_tricolor(k,0)][k]++;
https://stackoverflow.com/questions/46123911
复制相似问题