java - 如何从opencv中的轮廓中提取简单的几何形式

标签 java android image-processing opencv

我有一个 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/

相关文章:

java - DigestUtils.md5Hex 返回相同的值

java - 根据 equals 和 hashcode 实现compareTo

android - drawable-land-xhdpi = 无效的资源目录名称?

android - 三星 AOD 和锁屏媒体元数据未知

algorithm - 在 Matlab 中实现自适应分水岭分割

iphone - 仅在 UIImageView 的非透明像素上有效地检测触摸

c++ - 从图像中近似数字厚度的快速算法

java - 有没有办法使用 WebFlux 在 Azure Kubernetes 服务中配置 SSL 证书而不使用 Java keyStore?

java - 如何初始化 Spring Data JPA 规范?

javascript - 使用 Wikitude SDK 相对于设备位置的 AR 对象