EMGU 3.0.0 OpenCV插入和删除轮廓点



我最近尝试将Emgu库从2.4.2升级到3.0.0。因此,版本发生了重大变化,我在修改代码以使其正常工作时遇到了一些麻烦。

2.4.2版本的Emgu具有轮廓类别:http://www.emgu.com/wiki/files/2.4.2/do。。。Index.html

我的代码使用它,有时我使用RemoveAt方法删除点或使用Insert方法添加点。我的初始轮廓可能包含异常点(由于各种标准,如曲率、相邻点之间的距离等)

在新版本的Emgu中,我尝试使用VectorOfPoint类。它适用于我的大部分代码,但(据我所知)它仍然没有任何等效的RemoveAt方法。它似乎有一些类似于Insert方法(Push方法:http://www.emgu.com/wiki/files/3.0.0/document/html/9f6838b0-d946-adc6-e14e-8f223079f5e3.htm)尽管我不确定这是否正是我想要的。

我进一步研究了这个问题,发现Mat类有一个PushBackPopBackemoveAt方法允许您输入要删除的元素的索引I)。

举个例子,以下是我之前使用RemoveAt方法的方式:

for (int i = nPoints - 1; i >= 0; i--)
{
if (!goodPoint[i])
{
shapeContour.RemoveAt(i);
continue;
}
}

我看不到我可以在新版本的Emgu中使用的直接功能。我错了吗?

如果有任何帮助,我将不胜感激。提前谢谢。

要从VectorOfPoint中移除值,请使用pop()(从向量末尾移除并检索值),没有"按索引移除"方法,但很明显,您可以使用pop()和push()(插入到向量的末尾)构建自己的方法。

最新更新