Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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
Python 3.x 为什么我应该使用(y,x)而不是(x,y)来访问opencv中的像素?_Python 3.x_Numpy_Opencv - Fatal编程技术网

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

Python 3.x 为什么我应该使用(y,x)而不是(x,y)来访问opencv中的像素?,python-3.x,numpy,opencv,Python 3.x,Numpy,Opencv,我必须使用openCV访问图像中的一个像素,但起初我无法访问,因为python告诉我我想要访问的值超出了范围 然后我搜索这个错误,发现我应该使用image[y,x]而不是image[x,y]来访问像素 我在本页的评论中发现了这条信息,但没有解释: Adrian Rosebrock 2016年2月12日下午3:19#: 在OpenCV+NumPy中访问像素值时,实际上是按(y,x)顺序而不是(x,y)顺序指定它们。因此,您需要使用:image[cY,cX] 所以,问题是…为什么我在尝试访问像素时

我必须使用openCV访问图像中的一个像素,但起初我无法访问,因为python告诉我我想要访问的值超出了范围

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

我在本页的评论中发现了这条信息,但没有解释:

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


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

在注释中找到答案。它与语言如何存储矩阵有关:


除Fortran外,大多数语言都按行的主要顺序存储矩阵, 所以索引是行、列,也就是y、x保罗R 2月6日8:30


在评论中找到答案。它与语言如何存储矩阵有关:


除Fortran外,大多数语言都按行的主要顺序存储矩阵, 所以索引是行、列,也就是y、x保罗R 2月6日8:30


除了FORTRAN语言外,大多数语言都是以行主顺序存储矩阵,所以索引是“代码>行、列、AKA <代码> Y、X < /代码>。OpenCV使用图像的矩阵表示法(C++中甚至调用CV::MAT),这意味着<代码>(行,列)< /代码>…但是,对于点,它们使用笛卡尔坐标,即
(x,y)
。现在有点混乱beginning@PaulR感谢您为问题命名!我认为这是因为矩阵表示,因为在opencv中,图像被表示为矩阵:非常简单的答案是,你只需要接受它们是如何做到的。。。以及BGR而非RGB通道顺序。我猜这是你为所有性能付出的代价:-除了FORTRAN语言,大多数语言都是以行主顺序存储矩阵,所以索引是“代码>行、列、AKA <代码> Y、X<代码>。OpenCV使用图像的矩阵表示法(C++中甚至调用CV::MAT),这意味着<代码>(行,列)< /代码>…但是,对于点,它们使用笛卡尔坐标,即
(x,y)
。现在有点混乱beginning@PaulR感谢您为问题命名!我认为这是因为矩阵表示,因为在opencv中,图像被表示为矩阵:非常简单的答案是,你只需要接受它们是如何做到的。。。以及BGR而非RGB通道顺序。我猜这是你为所有表演付出的代价:-)