1

一些关于使用 OpenCV 进行图像处理的示例代码如下所示:

for(i=0;i<height;i++)
{
      for(j=0;j<width;j++)
      {
          if(pointPolygonTest(Point(i,j),myPolygon))
          {
                 // do some processing
          }
      }
}

在迭代中,为什么我们需要从高度和宽度开始?还有为什么 Point 是 store (height, width) 所以是 -> (y,x) ?

4

2 回答 2

2

[0..Height] 和 [0..Width] 之间的范围是您工作区域的最大边界。

此代码正在测试整个图像的哪些像素在多边形内myPolygon

“整体”一词意味着您应该检查图像的所有像素,因此您应该从 0 迭代到 Y 的高度,并从 0 迭代到 X 的宽度。

于 2013-01-13T14:46:16.330 回答
1

实际上在这里,行/列约定用于迭代整个图像。

高度 = 行数

宽度 = 列数

图像被逐行访问。外循环在图像的行上迭代,内循环在列上迭代。所以基本上i是当前行并且j是图像的当前列。

内部循环处理一整行图像。

于 2013-01-13T15:25:38.407 回答