如果您有 1 像素宽度的轮廓线,那么您可以计算每个点 * 的邻居数量。如果给定轮廓的每个点都有 2 个邻居,则轮廓是闭合的。如果有 2 个点,每个点只有 1 个邻居,则轮廓是开放的。
如果您的轮廓较粗,则可以应用骨架化算法将其细化为 1 像素。一个有趣的情况是当轮廓上有侧分支时,但在这种情况下必须有 3 个邻居的分支点,因此可以轻松处理类似的情况。
* 计算邻居很容易:使用原始图像!随机选择轮廓上的一个点,检查邻近的 8 个像素,并计算属于轮廓的部分。然后重复这些邻域检查,依此类推,直到检查完轮廓的所有像素。