我有一张图像,其中包含黑色背景上的白色簇。白色部分的簇没有连接在一起,但是我想围绕整个外壳而不是每个簇绘制轮廓。附有图像。
当我尝试形成轮廓时,它是围绕单个簇进行的。我可以获得一些关于如何形成一个总体轮廓的提示、帮助或代码吗?
最佳答案
opencv 凸包函数几乎完全符合您的要求。它“找到点集的凸包”。请参阅:
- http://docs.opencv.org/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html?highlight=convexhull#convexhull
- http://docs.opencv.org/doc/tutorials/imgproc/shapedescriptors/hull/hull.html
我说“几乎”,因为你可能不想直接穿过左下角。
另一种方法是进行形态学扩张 N 次,直到只有一个连续的白色区域。您需要考虑如何有效地检查是否只剩下一个白色区域。然后腐 eclipse N 次以恢复到与原始形状大致相同的形状(但只有一个连续的形状)。然后找到轮廓。如果这样做,您需要将图像嵌入到更大的黑色背景中,以便有膨胀的空间。 请参阅:
关于OpenCV 裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16765753/