gpt4 book ai didi

c++ - 如何确定图像中多边形的面积

转载 作者:行者123 更新时间:2023-11-30 03:58:56 26 4
gpt4 key购买 nike

如果我有一个凸多边形顶点,那么我在图像中的面积计算就不会按照标准公式准确计算。

(为了简单起见)如果我有 3x3 正方形,并且顶点是 (1,1) (1,3) (3,3) (3,1)

enter image description here

通过此处描述的多边形面积计算方法

enter image description here

然后将总和除以 2,我们得到面积。

因此对于上面的 3 x 3 数据,我们将得到面积 4 而不是 9。

enter image description here

这是因为顶点不是点而是像素

这是对应的代码。坐标是循环的。

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 并得到正确的面积。但是图像中的不规则多边形呢?我希望这个问题是有道理的。

最佳答案

如果您不想使用像素角作为顶点,请考虑下一个方法(适用于简单图形 - 所有凸的,一些凹的):

enter image description here

在每个右边界像素的右侧、每个底部边界像素的底部、右下角像素的右下角添加额外的假像素。这里的灰色像素是初始的,浅蓝色的是假的。

关于c++ - 如何确定图像中多边形的面积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27168179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com