🖲️chatGPT 帮我解释了为什么numpy 图像形状以hight开头
2023-6-21
| 2023-6-21
0  |  0 分钟
type
status
date
Jun 21, 2023 09:35 AM
slug
summary
tags
category
icon
password
老记不住, 查了一下它的历史因素

现象:

opencv 图像切片用numpy 实现, 但numpy 与 我用惯的wand比, 图像形状有点反人类习惯, 总记不住.
OpenCV中的图像通常以NumPy数组表示,数组的形状为(height, width, channels)
在访问和修改像素值时,我们使用[y, x]而不是[x, y]。

原因

图像在 numpy 中, 数组的形状为什么height 在前面的原因
在NumPy中,图像数组的形状为(height, width, channels)的原因是基于行优先(row-major)存储顺序。在行优先存储顺序中,二维数组的行按顺序排列,每一行内的元素按顺序存储。在这种情况下,height对应于图像的行数,而width对应于图像的列数。
这个数组的形状是(3, 3),因为它有3行和3列。行优先存储顺序意味着,在内存中,数组元素将以 A, B, C, D, E, F, G, H, I 的顺序存储。这就是为什么height(行数)在形状表示中位于第一位置的原因。
当处理彩色图像时,我们需要考虑通道。对于一个BGR彩色图像,NumPy数组将具有三个通道。在这种情况下,数组的形状将为(height, width, 3)。在这种表示中,每个像素由一个大小为3的数组表示,其中包含蓝色、绿色和红色通道的值。
将height(图像的行数)放在形状表示的前面是一种遵循行优先存储顺序的惯例,因此在处理图像时,我们可以更自然地访问和处理每一行的数据。这也使得在循环遍历图像时,行和列索引的使用更加直观。
 
技术折腾
  • 图像编程
  • chatGPT 本地反代官网的方法10 车临时号翻车, 部署到现在,累
    目录