c++ - 如何在 OpenCV 中加入/合并轮廓?

标签 c++ opencv computer-vision set-union

“连接”这样的操作对于轮廓是否存在/合理?由于轮廓划定了平面上的某些区域,因此多个轮廓可以合并为集合。

不是吗?

如果是那么如何 union 轮廓?

最佳答案

是的,您可以合并(并相交、设置差异和对称差异)等高线。由于它们是 cv::Point 的 vector ,因此表示为多边形,您可以使用任何适合的算法/库。只需在 SO 中搜索多边形 union 等。但是类似的东西还没有(还?)包含在 OpenCV 中。

OpenCV 中一种简单(但不是很高效)的方法是创建两个黑色图像,一个用于每个轮廓,将每个轮廓绘制为白色并填充,然后在图像上使用按位或来获得并集图像。然后您可以再次使用 cv::findContours 提取轮廓。 其他操作(相交、设置差异和符号差异)可以通过按位与、减法和加法+相应的阈值来完成。

关于c++ - 如何在 OpenCV 中加入/合并轮廓?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17170224/

相关文章:

c++ - 在 C++ 中计算二项式系数模块素数 p

c++ - 什么样的数据或函数放在C++类的保护区比较好?

c++ - C++ 中的类是如何在内部实现的?

移植opencv所需的文件

python-2.7 - 从Python中的OpenCV轮廓获取坐标列表

opencv - OpenCV相机校准的数学背景

opencv - 如何在 OpenCV 中估计二维相似性变换(线性共形、非反射相似性)?

c++ - 在写入该变量的唯一线程中使用 memory_order_relaxed 加载原子变量是否安全?

algorithm - 8 点算法的基本矩阵

c++ - 如何使用Visual Studio在.cpp文件中#include <torch.extension.h>?