2015-07-10 366 views
0

最近我在开发使用OpenCV的android应用程序。现在我遇到一个问题:如何将List <MatofPoint>转换为opencv中的Mat?

Imgproc.findContours(grayMat, contours1, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE); 

此功能后,我想打电话给Imgproc.MatchShapes检测2个图像是否匹配。但是在Java版本下,MatchShapes需要Mat类型的参数。
如何将List<MatOfPoint>转换为Mat?

+0

不知道Java,但contours1应该是某事像ListOfListOfPoints(因为每个轮廓应该是点的列表) – Micka

+0

,你不需要从看到[MatOfPoint类扩展垫] [1] [1]:http://stackoverflow.com/questions/12380594/opencv-android-convert-matofpoint-to-mat – Sinned

回答

0

用于检测轮廓的功能将返回一个MatOfPoints的列表。每个轮廓 - 因为可以有很多 - 有它自己的MatOfPoints

您必须找到一种方法来选择您想要使用的轮廓Imgproc.MatchShapes。如果你知道只有一个,那么只需使用List<MatOfPoints>中的第一个条目。如果您想要最大的轮廓,请使用一些轮廓属性来查找最大轮廓。如果你有时间,你可以检查每一个轮廓。

然后,一旦找到想要比较的单个轮廓,就可以使用该MatOfPoints。根据this StackOverflow question,它们完全兼容。

相关问题