为什么?特定像素处理应该是处理(h,w)而不是(w,h)或(x,y)

时间:2013-01-13 14:33:58

标签: c++ opencv

关于使用OpenCV进行图像处理的一些示例代码给出了类似的东西:

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

在迭代中,为什么我们需要从高度和宽度开始?以及Point存储(高度,宽度)的原因是 - > (y,x)?

2 个答案:

答案 0 :(得分:2)

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

此代码测试整个图像的哪些像素位于多边形myPolygon内。

“整体”一词意味着您应该检查图像的所有像素,这样您就应该从0迭代到Y,然后从0迭代到X.

答案 1 :(得分:1)

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

  

height =行数

     

width =列数

正在逐行访问图像。外部循环遍历图像的行,内部循环在列上迭代。所以基本上i是当前行,j是图像的当前列。

内部循环处理图像的完整行。