【问题标题】:Contour comparison in opencvopencv中的轮廓比较
【发布时间】:2023-04-04 11:05:02
【问题描述】:

我在 opencv/c++ 中创建了一些代码,女巫可以找到图像的轮廓(叶子) 所以从方法中得到轮廓结果后

findContours( canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );

此方法的结果将保存为“轮廓”类型(OutputArrayofArrays

所以问题是如何将这些结果与其他结果进行比较?

我发现这个方法可以比较但是我不能用!

double compare = cvMatchShapes(R, T, CV_CONTOURS_MATCH_I1);

R,T:要比较的 2 个对象。

谢谢

【问题讨论】:

    标签: c++ opencv comparison contour canny-operator


    【解决方案1】:

    首先你应该定义什么是“其他”结果。

    其次,使用cv::matchShapes(C++ 接口)而不是cvMatchShapes(C 接口)可能会更好 - 类型兼容性/转换问题会更少。

    “轮廓”类型 fromcv::findContours 不超过vector<vector<cv::Point>,即。 e.它的输出中有不止一个轮廓。

    cv::matchShapesvector<cv::Point>cv::Mat 作为输入参数,即。 e.您只能使用此功能比较 2 个轮廓。

    因此,您应该首先从cv::findConntours 输出中提取您感兴趣的轮廓(例如,超过 N 个点,或超过 X 个总长度),然后将每个轮廓与另一个轮廓进行比较。

    如果您对比较下一个 cv::findContours 调用输出的轮廓感兴趣,您可以使用数组元素的任何匹配技术(例如,蛮力,即前一个数组的每个元素与当前数组的每个元素数组)。

    可以在 OpenCV 文档中找到更多信息:3.0 version2.4 version

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-23
      • 2022-01-23
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      • 1970-01-01
      • 2014-07-12
      相关资源
      最近更新 更多