我有一个 Mat contours
,我用 approxPolyDP
逼近了每个 contour
。
我现在要做的是检测矩形、三角形、圆形等形式。例如用不同的颜色或使用 Canvas 等重新绘制它们。
有没有办法利用轮廓?我如何访问 Mat contours
中的点并进一步简化它们(消除变形,或者如果两个重要点靠得太近,我可以安全地删除其中一个)?
我正在使用 Java (Android) 进行开发,因此并非所有 C/C++ 方法/类型都对我可用(否则 JNI 调用将是一种浪费)。
最佳答案
等高线作为 vector > 等高线返回。您可以通过执行以下操作在 C++ 中轻松访问它们:
vector<vector<Point> > contours;
findContours(..,contours,...);
contours.at(0).at(0) //first point of first contour
如果您使用 Mat 访问它们,那么您将需要测试生成的排列。应该很容易吧,虽然话说回来,JNI 和 android opencv 很痛苦。
关于java - 如何从opencv中的轮廓中提取简单的几何形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9663841/