在离散的基于网格的平面上(想想:图像的像素),我有一个闭合的轮廓,可以通过以下方式表达:
(x1,y1);(x2,y2);(x3,y3);...
(x1,y1) + 00001112...
我知道如何从一个表示切换到另一个表示。这将是输入数据。
我希望通过轮廓获得有界的网格坐标集。 考虑这个例子,红色坐标是轮廓,灰色是起点:
如果灰色坐标是(0,0),那么我想要一个向量保持:
(1,1),(2,1),(3,1),(3,2)
顺序并不重要,输出矢量也可以保持轮廓本身。
选择的语言是C ++,但我可以使用任何现有的代码,算法,库,指针等......
虽然我可能CGAL会有这样的事情,但我对它不熟悉并且无法通过手册找到我的方式,所以我甚至不确定。 我也看了Opencv,但我认为它没有提供这种算法(但我可能错了?)。
我正在考虑找到边界矩形,然后检查矩形中的每个点以查看它们是否为inside/outside,但这似乎不是最理想的。有什么想法吗?
答案 0 :(得分:1)
解决这个问题的一种方法是drawContours,你可以跟踪轮廓点。