python - 检查两个轮廓是否相互接触
问题描述
我有两个轮廓cnt1
和cnt2
. 我想检查两个轮廓是否相互接触。例如,考虑以下两个相互接触的轮廓:
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 1, 1, 1, 0, 0],
[0, 0, 1, 1, 1, 1, 0, 0, 1, 0],
[0, 1, 0, 0, 1, 1, 0, 0, 1, 0],
[0, 1, 0, 0, 1, 1, 0, 0, 1, 0],
[0, 1, 0, 0, 1, 1, 0, 0, 1, 0],
[0, 0, 1, 1, 1, 1, 0, 0, 1, 0],
[0, 0, 0, 0, 0, 1, 1, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
要使用 opencv 获得一个工作示例,让我们有两个轮廓,如下所示:
labels = np.array([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 5, 5, 5, 0, 0],
[0, 0, 1, 1, 1, 5, 5, 5, 0, 0],
[0, 0, 1, 1, 1, 5, 5, 5, 0, 0],
[0, 0, 1, 1, 1, 5, 5, 5, 0, 0],
[0, 0, 0, 0, 0, 5, 5, 5, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], dtype=np.uint8)
cnt1, hierarchy = cv2.findContours((labels==1).astype(np.uint8), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
cnt2, hierarchy = cv2.findContours((labels==5).astype(np.uint8), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
解决方案
推荐阅读
- javascript - 单击下一个按钮时如何显示数组中剩余的项目集?
- python - 如何在不占用所有 RAM 的情况下将大量 MongoDB 集合中的所有记录写入 csv 文件?
- swift - 如何让细胞变大几秒钟?
- vue.js - 使用 i18n 标签进行翻译
- python - 如何从字节数组初始化 RGBA cv::Mat?
- c# - 方法等待,程序在方法结束前退出方法
- powerbi - 如何使用过滤器嵌入公共报告?
- angular - Nativescript 图表缩放未在事件中返回缩放比例值
- python - 是否有 SciPy 方法来自动裁剪图像,即从 2d `numpy.ndarray` 中修剪零?
- vue.js - 为什么新插入的带有 router-link 标签的组件代替 v-for 列表中特定索引处的单个项目会出错?