我正在尝试从 map 数据构造导航网格物体。步骤之一涉及将二进制图像(其中0表示占用空间,1表示自由空间)转换成平面直线图。
我正在尝试找到一种可靠的方法。我目前的想法是使用Canny边缘检测器,然后通过OpenCV的Hough线变换进行处理。然而,这不能保证所检测的线以代表原始形状的方式连接。
可以安全地假定 map 相对平滑,并且没有一个区域相互接触。
编辑-这是一个示例图像:
白色区域代表自由空间
黑色区域代表占用的空间
最佳答案
在此二进制图像上,边缘检测是不必要的/有害的,只需使用contour following即可。
然后,通过Douglas-Peucker线简化方法将Freeman链变为折线。
关于python - 从二进制图像中提取形状/多边形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34021497/