سلام. زوایا را ببرید تو فضای قطبی میانگین بگیرید دوباره برگردونید به فضای کارتزین به صورت زیر:
float anglesMean(const std::vector<float>& angles)
{
float sum_cos = 0.f;
float sum_sin = 0.f;
for (int i = 0; i < angles.size(); i++) {
sum_cos += cos(angles[i] * CV_PI / 180) ;
sum_sin += sin(angles[i] * CV_PI / 180) ;
}
sum_cos /= angles.size();
sum_sin /= angles.size();
return atan2(sum_sin, sum_cos) * 180 / CV_PI;
}