C++ 如何通过在opencv c+中删除图像中的一些已知点来隔离对象+;

C++ 如何通过在opencv c+中删除图像中的一些已知点来隔离对象+;,c++,opencv,C++,Opencv,这可能是显而易见的,但请原谅我,因为我在这方面很新。我有一个项目,提取一些轨道,我已经做了。项目的第二部分是检测图像中的人类,我也这样做了,但我在这张图像中也有地面点,因为我有这个地面点作为点的向量,我试图用这些点和我卡住的地方创建一个面具。我首先使用“unique”函数删除了重复点,现在我尝试使用预定义的“sort”函数对点进行排序,但我一直收到一个错误。排序代码示例为: struct contour_sorter // 'less' for contours { bool opera

这可能是显而易见的,但请原谅我,因为我在这方面很新。我有一个项目,提取一些轨道,我已经做了。项目的第二部分是检测图像中的人类,我也这样做了,但我在这张图像中也有地面点,因为我有这个地面点作为点的向量,我试图用这些点和我卡住的地方创建一个面具。我首先使用“unique”函数删除了重复点,现在我尝试使用预定义的“sort”函数对点进行排序,但我一直收到一个错误。排序代码示例为:

struct contour_sorter // 'less' for contours
{
    bool operator ()(const vector<Point> &a,const vector<Point> &b )
    {
        Rect ra(boundingRect(a));
        Rect rb(boundingRect(b));
        // scale factor for y should be larger than img.width
        return ( (ra.x + 1000*ra.y) < (rb.x + 1000*rb.y) );
    }
};

vector<Point> requiredPoints;

unique(requiredPoints.begin(), requiredPoints.end() );
// apply it to the contours:
std::sort(requiredPoints.begin(), requiredPoints.end(), contour_sorter());
struct contour\u分拣机//“less”用于轮廓
{
布尔运算符()(常量向量&a、常量向量&b)
{
Rect-ra(boundingRect(a));
Rect-rb(boundingRect(b));
//y的比例因子应大于img.width
回报率((基准日x+1000*基准日)<(基准日x+1000*基准日));
}
};
所需向量点;
唯一(requiredPoints.begin(),requiredPoints.end());
//将其应用于轮廓:
std::sort(requiredPoints.begin()、requiredPoints.end()、contour_sorter());
错误是:

参数1没有从“cv::Point_u2;”到“const”的已知转换 标准::向量>&'

有没有更好的方法来实现我的目标?我只想检测对象,将每个对象放在一个矩形中,然后找到到摄影机的距离。现在我只需要执行形态学操作中的斑点。谢谢

可以通过链接查看图像


为什么要对点进行排序,并提供一个示例输入图像会有所帮助,因为我将几个点推入点向量中,它们没有排序……我的想法是,如果它们排序,我可以使用“drawcontour”功能。我已添加了一个到图像的链接