一个x方向的简单聚类

版权声明: https://blog.csdn.net/qq_25147107/article/details/82353330

void clustering(vector<cv::Point2f> &vec_in)
{
    int size = vec_in.size();

    for (int i = 0; i < vec_in.size();i++)
    {
        vector<int> count;
        int current_x = vec_in[i].x;
        int ii = i;
        for (int j = ii+1; j < vec_in.size(); j++)
        {
            int last_x = vec_in[j].x;
            if (abs(last_x-current_x)<10)
            {
                count.push_back(j);
            }
        }
        sort(count.begin(), count.begin() + count.size());
        if (count.size()>=1)
        {
            for (int k =count.size()-1; k >=0 ;k--)
            {
                vec_in.erase(vec_in.begin() + count[k], vec_in.begin() + count[k]+1);
            }
        }
    }
}

当vec_in中的x量相差小于10时,合并为一个点

猜你喜欢

转载自blog.csdn.net/qq_25147107/article/details/82353330