我已经找到了一个解决方案,但问题是我有太多的点,我想减少他们。这不是一个主要问题,但我仍然希望有更少的点。
我已经在这里搜索了其他答案,但我没有找到任何有关我的问题。我已经附上了一个样品面具作为参考。
The sample binarised mask
为了清楚起见,我已经用Python编写了一个脚本来实现这一点。我采取的步骤是:
1.将彩色蒙版转换为二值化蒙版(因为我只有一个类)。
1.在图像上应用轮廓并找到掩模的边缘点。
1.对检测到的轮廓点进行细化。
1.根据Angular 的主要变化,只记下这些点。
1.以YOLO分割文本格式保存所有点(cls_name x1y1 x2 y2 .... xn yn)
**但最后我发现了一个可怕的现实,因为它考虑了外部边界,如果标签都重叠,它就变成了一个包含不需要区域的大斑点。所以我不得不放弃这个,并在UNET中使用这些掩码,在那里我得到了我想要的输出。
1条答案
按热度按时间mrphzbgm1#
如果你想减少点数,你可以使用
cv.approxPolyDP()
。这不是一个很聪明的算法,但它会做。它将保留或删除某些点,具体取决于删除每个点后轮廓的相似程度。它不会插入或移动任何点。
字符串
选择较小的
epsilon
(减小因子)以获得更准确的结果,即而没有去除那么多的点。以下是官方教程:
https://docs.opencv.org/4.x/dd/d49/tutorial_py_contour_features.html