【问题标题】:OpenCV cropping imageOpenCV 裁剪图像
【发布时间】:2013-05-27 17:36:48
【问题描述】:

我有一张图片,其中包含黑色背景上的白色簇。白色部分的簇没有连接在一起,但是我想在整个外壳周围而不是在每个簇周围绘制轮廓。图片已附上。

当我试图形成轮廓时,它会围绕单个集群进行。我能得到一些关于如何形成一个一般轮廓的提示、帮助或代码吗?

【问题讨论】:

  • 根据您的描述,我认为您想为图像的一部分制作蒙版图像。而且您显示的图像不是该操作的好图像。您可能希望从原始(非阈值)图像开始,以便您可以有一些方法来掩盖该部分。否则,您可能必须明确定义加入或不加入的内容。
  • 其实我忘了说,上图是经过一些处理得到的。也许根据您的描述,我应该将对应关系映射到原始图像,而不是应用遮罩。我会试试的

标签: opencv image-processing


【解决方案1】:

opencv 凸包函数几乎完全符合您的要求。它“找到点集的凸包”。见:

我说“几乎”,因为你可能不想直接切过左下角。

另一种方法是进行 N 次形态扩张,直到只有一个连续的白色区域。您需要考虑如何有效地检查是否只剩下一个白色区域。然后腐蚀 N 次以恢复到与原始形状大致相同的东西(但只有一个连续的形状)。然后找到轮廓。如果您这样做,您需要将图像嵌入更大的黑色背景中,以便有空间进行膨胀。 见:

【讨论】:

  • 感谢您提供出色的解决方案。两者都很好,非常感谢。干杯
【解决方案2】:

您可以使用HoughLines 来查找图像中的线条。 你imgae的外边缘应该是最长的线。

也许将这与 user2151446 的扩张理念结合起来以获得更好的结果。

【讨论】:

    【解决方案3】:

    也许,你可以尝试将图像分成许多小块,然后你可以计算每个块中有多少像素是白色的,如果像素数大于阈值,则将所有这些块像素设置为白色。那么也许你可以找到一个大致的轮廓。

    【讨论】:

      猜你喜欢
      • 2012-12-31
      • 2017-08-04
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2020-10-18
      • 2018-08-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多