cv2.fillPoly奇怪的结果

时间:2018-09-24 17:30:36

标签: python opencv

尝试使用cubicQ光栅化简单多边形时,我得到了奇怪的结果-没有零像素的总和是10201,但是应该是100 * 100。

cv2.fillPoly

怎么了?

1 个答案:

答案 0 :(得分:2)

您犯了一个简单的一次性错误-应该是101 * 101(是10201)。

为说明原因,让我们按比例缩小问题,并运行以下几点算法:

[[0, 0], [2, 0], [2, 2], [0, 2], [0, 0]]

并说明以下网格上的进度:

使用这些顶点调用cv2.fillPoly(在概念上)执行以下5件事:

  • (0,0)(2,0)画一条线

  • (2,0)(2,2)

    画一条线

  • (2,2)(0,2)

    画一条线

  • (0,2)(0,0)

    画一条线

  • 填充多边形

结果是

如您所见,填充了9个像素:

  • 使用了3列(0到2,包括0和2,表示(2 - 0) + 1 == 3)。
  • 使用3行(0到2,包括0,包括2,表示(2 - 0) + 1 == 3)。

类似地,在您的情况下:(100 - 0 + 1) * (100 - 0 + 1) = 101 * 101 = 10201