Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么?特定像素处理应该是处理(h,w)而不是(w,h)或(x,y)_C++_Opencv - Fatal编程技术网

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

C++ 为什么?特定像素处理应该是处理(h,w)而不是(w,h)或(x,y),c++,opencv,C++,Opencv,一些关于使用OpenCV进行图像处理的示例代码给出了如下内容: for(i=0;i<height;i++) { for(j=0;j<width;j++) { if(pointPolygonTest(Point(i,j),myPolygon)) { // do some processing } } } for(i=0;i介于[0..Height]和[0.

一些关于使用OpenCV进行图像处理的示例代码给出了如下内容:

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

for(i=0;i介于[0..Height]和[0..Width]之间的范围是您工作区域的最大边界

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


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

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

高度=行数

宽度=列数

图像是按行访问的。外循环在图像的行上迭代,内循环在列上迭代。因此基本上,
i
是图像的当前行,
j
是图像的当前列


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

为什么我们需要从高度和宽度开始?
与之相反?它不是从高度和宽度开始。它分别从
高度和
宽度开始。它从
高度和
宽度开始,分别从
高度和
宽度开始.对不起,可能弄错了,我只是想写下来“为什么我们不迭代列前每一行的像素?-我想我得到了一些要点,谢谢。这意味着,我还替换了宽度的I和高度的j…这将得到相同的结果?实际上,我的问题是为什么我们需要从每一行像素开始迭代。如果I是高度,j是宽度,这意味着点(I,j)是否表示(y,x)?(据我所知,x坐标表示行,y坐标表示像素位置右侧的列?)抱歉,如果这不是一个好问题?这是迭代所有图像像素的常用方法。在您的情况下,将两个
交换为
行将导致相同的结果。如果仅交换
宽度
高度
没有差异。这意味着您的
宽度
等于
高度
并且您的正方形图像我得到了我只是把位置坐标(即(x,y)位置)和像素操作搞错了。谢谢你的回答。