1
我想了解this code这个切片是什么意思[:,:,0]?
我无法理解这条线正在做什么。流变量是一个流向量的阵列,每个像素在图像中都有一个(所以是二维数组)。
fx, fy = flow[:, :, 0], flow[:, :, 1]
任何帮助,将不胜感激
我想了解this code这个切片是什么意思[:,:,0]?
我无法理解这条线正在做什么。流变量是一个流向量的阵列,每个像素在图像中都有一个(所以是二维数组)。
fx, fy = flow[:, :, 0], flow[:, :, 1]
任何帮助,将不胜感激
让我们先简化的表达。您的代码:
fx, fy = flow[:, :, 0], flow[:, :, 1]
等同于:
fx = flow[:, :, 0]
fy = flow[:, :, 1]
所以现在把它归结于什么flow[:, :, 0]
。这意味着flow
是一个numpy阵列至少有三个维度(让我们定义N
作为维数)。然后flow[:,:,0]
是一个N-1
维数组,我们总是选择0
作为第三维。
在图像处理的上下文中,图像通常是一个三维阵列(给定其具有颜色)与维度w
× h
× 3
(三个颜色通道)。因此,这意味着flow[:,:,0]
将生成w
× h
查看其中对于每个像素,我们选择红色通道(给定红色通道是第一个通道)。
所以如果flow
是一个5 3矩阵,如:
>>> flow
array([[[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11]],
[[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23]],
[[24, 25, 26],
[27, 28, 29],
[30, 31, 32],
[33, 34, 35]],
[[36, 37, 38],
[39, 40, 41],
[42, 43, 44],
[45, 46, 47]],
[[48, 49, 50],
[51, 52, 53],
[54, 55, 56],
[57, 58, 59]]])
然后我们将获得用于每个3元组的第一个元素,使得它:
>>> flow[:,:,0]
array([[ 0, 3, 6, 9],
[12, 15, 18, 21],
[24, 27, 30, 33],
[36, 39, 42, 45],
[48, 51, 54, 57]])
和由查询flow[:,:,1]
,我们获得:
>>> flow[:,:,1]
array([[ 1, 4, 7, 10],
[13, 16, 19, 22],
[25, 28, 31, 34],
[37, 40, 43, 46],
[49, 52, 55, 58]])
记住,这些观点:如果你改变flow
,它将产生影响力的fx
和fy
以及,即使你以前做这些任务。
请参阅[numpy slicing](https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html)。 –
我已经阅读过它,并且我认为它说它会返回维度为N-1的相应子数组,但我不太明白这意味着什么,并且想知道是否有人可以用不同的方式解释它? – cageyKJ