使用cv :: findContour()为vector <point2f>点云计算轮廓顶点

时间:2018-07-26 18:10:37

标签: c++ opencv

请了解我对opencv还是很陌生。 我所拥有的是一个充满2D点云且浮点值分别为x和y索引的向量。我想要的是某种方法来计算此云的外部轮廓。确定边界矩形和凸包是没有问题的,因为相应的函数仅适用于我的向量。我期望findContour()没什么不同,但似乎我错了。从字面上看,每个关于findContour()的教程都教我如何将图像加载到cv::Mat对象中,没有人谈论这与二维点云在理论上与二进制图像没有什么不同。我知道findContour()期望它的第一个参数是特殊类型的矩阵,但是我不知道如何修改向量以达到期望的结果。我尝试使用cv::Mat(vector<Point2f>)实例化一个矩阵,该矩阵本身可以工作,但不幸的是,当我将其传递给findContour()时会导致异常。请帮忙!

我正在使用Raspbian btw在Raspberry Pi 3上使用GCC。

1 个答案:

答案 0 :(得分:0)

findContours将仅在图像中找到轮廓。

点云的外部轮廓定义不明确-您怎么知道不进入两个点之间才能连接到更靠近中间的点?

仅当您具有一定比例尺长度并认为是边缘时才有意义。 openCV的最简单方法是计算凸包,然后查看convexity defects-将您认为轮廓的任何缺陷添加到该位置的点列表中