gpt4 book ai didi

c++ - opencv中的轮廓比较

转载 作者:行者123 更新时间:2023-11-28 00:09:00 27 4
gpt4 key购买 nike

我已经在 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 个对象。

谢谢

最佳答案

首先,您应该定义“其他”结果是什么意思。

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

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

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

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

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

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

关于c++ - opencv中的轮廓比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34029688/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com