如果我有一个凸多边形顶点,那么我在图像中的面积计算就不会按照标准公式准确计算。
(为了简单起见)如果我有 3x3 正方形,并且顶点是 (1,1) (1,3) (3,3) (3,1)
通过此处描述的多边形面积计算方法
然后将总和除以 2,我们得到面积。
因此对于上面的 3 x 3 数据,我们将得到面积 4 而不是 9。
这是因为顶点不是点而是像素。
这是对应的代码。坐标是循环的。
int X[] = { 1, 1, 3, 3, 1};
int Y[] = { 1, 3, 3, 1, 1};
double Sum1 = 0;
double Sum2 = 0;
int numElements = 5;
for (int k = 0; k < numElements-1; k++)
{
Sum1 += X[k] * Y[k + 1];
Sum2 += Y[k] * X[k + 1];
}
double area = std::abs((double)(Sum1 - Sum2))/2;
对于正方形,我们可以对宽度和高度进行 +1 并得到正确的面积。但是图像中的不规则多边形呢? 我希望这个问题是有道理的。
最佳答案
如果您不想使用像素角作为顶点,请考虑下一个方法(适用于简单图形 - 所有凸的,一些凹的):
在每个右边界像素的右侧、每个底部边界像素的底部、右下角像素的右下角添加额外的假像素。这里的灰色像素是初始的,浅蓝色的是假的。
关于c++ - 如何确定图像中多边形的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27168179/