如何在OpenCV中从轮廓提取简单的几何形式

ssc*_*ass 5 java android opencv image-processing

我有个,Mat contours并且每个contour都有approxPolyDP。我现在要检测的是矩形,三角形,圆形等形式。例如,以其他颜色或使用画布等重绘它们。

有没有利用轮廓的方法?我如何才能访问其中的点Mat contours并进一步简化它们(删除变形,或者如果两个重要点靠得很近,可以安全地删除其中之一)?

我正在用Java(Android)开发,所以并不是我可以使用所有的C / C ++方法/类型(否则JNI调用会很浪费)。

ali*_*air 1

轮廓以向量 > 轮廓的形式返回。您可以通过执行以下操作轻松地在 C++ 中访问它们:

vector<vector<Point> > contours;
findContours(..,contours,...);
contours.at(0).at(0) //first point of first contour
Run Code Online (Sandbox Code Playgroud)

如果您使用 Mat 访问它们,那么您将需要测试生成的排列。不过,这应该很容易,尽管话虽如此,JNI 和 android opencv 很痛苦。