为什么我应该使用(y,x)而不是(x,y)访问opencv中的像素?

时间:2019-02-06 08:28:53

标签: python-3.x numpy opencv

我必须使用openCV访问图像中的像素,但起初我无法执行操作,因为python告诉我要访问的值超出范围。

然后我搜索了此错误,发现应该使用image[y, x]而不是image[x, y]访问像素。

我在本页注释中找到了这条信息,但没有解释: https://www.pyimagesearch.com/2016/02/01/opencv-center-of-contour/

  

Adrian Rosebrock,2016年2月12日,下午3:19#:   在OpenCV + NumPy中访问像素值时,实际上是按(y,x)顺序而不是(x,y)顺序指定它们。因此,您需要使用:image [cY,cX]

所以,问题是...为什么在尝试访问像素时为什么要反转坐标?

1 个答案:

答案 0 :(得分:0)

在评论中找到答案。这与语言存储矩阵的方式有关:

  

除了Fortran之外,大多数语言都以行优先的顺序存储矩阵,   因此索引是行,列,又名y,x。 – Paul R 2月6日8:30