小编Ath*_*ulf的帖子

如果包含重复元素,如何合并多个向量?

我正在尝试合并包含由houghLinesP属于一起提取的行的向量。

到目前为止,我有一个包含线段的 Vector:

vector<Vec4i> lines;
Run Code Online (Sandbox Code Playgroud)

我还有一个算法可以检查线段是否足够相似以被认为属于其他线段(目前仅基于距离和角度):

    vector<vector<Vec4i>> lineClusters;

    for(Vec4i line1: sortedLines){
        Point l1o = Point(line1[0], line1[1]);
        Point l1d = Point(line1[2], line1[3]);
        vector<Vec4i> cluster;
        for(Vec4i line2: sortedLines){
            Point l2o = Point(line2[0], line2[1]);
            Point l2d = Point(line2[2], line2[3]);
            if ((getDistance(l1o, l1d, l2o, l2d) <= 20) and
                (abs(angle(l1o, l1d) - angle(l2o, l2d)) <= 10)) {
                cluster.push_back(line2);
            }
        }
        lineClusters.push_back(cluster);
    }
Run Code Online (Sandbox Code Playgroud)

现在 VectorlineClusters为每个线段包含一个属于该线段的线段向量。

我现在面临的问题是如何合并这些向量。基本上我想合并包含至少一个重复线段的所有向量,以便最后只剩下几个集群。

为了说明,我创建了一个小图像: 可能的线段

在此图像中发现了黑色线段。我想将它们合并成行。我绘制的圆圈表示可能确定属于一起的线段,并由“lineClusters”内部的向量表示。(我没有把它们都画出来)

我真的不知道如何解决这个问题。有没有人对如何解决这个问题有任何想法?

编辑 为了使我的意图更明显,我添加了以下图像: 在此处输入图片说明. 我正在尝试对线段进行分组以识别车道。

更新

遵循 Braaedy 提供的建议会导致以下结果: 在此处输入图片说明

通过调整确定线条片段是否属于一起的函数,可以明显改善结果。

c++ opencv vector

5
推荐指数
1
解决办法
104
查看次数

标签 统计

c++ ×1

opencv ×1

vector ×1