有人可以给我解释一下这段代码的第二行吗?
objp = np.zeros((48,3), np.float32)
objp[:,:2] = np.mgrid[0:8,0:6].T.reshape(-1,2)
有人可以向我解释代码的np.mgrid [0:8,0:6]部分到底在做什么,而代码的T.reshape(-1,2)部分到底在做什么?
谢谢,干得好!
最佳答案
第二行创建一个multi-dimensional mesh grid,transposes和reshapes,以便表示两列并将其插入到objp数组的前两列中。
细目:
np.mgrid [0:8,0:6]创建以下mgrid:
>> np.mgrid[0:8,0:6]
array([[[0, 0, 0, 0, 0, 0],
[1, 1, 1, 1, 1, 1],
[2, 2, 2, 2, 2, 2],
[3, 3, 3, 3, 3, 3],
[4, 4, 4, 4, 4, 4],
[5, 5, 5, 5, 5, 5],
[6, 6, 6, 6, 6, 6],
[7, 7, 7, 7, 7, 7]],
[[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5],
[0, 1, 2, 3, 4, 5]]])
.T转置矩阵,然后.reshape(-1,2)将其重整为两个两列的数组形状。然后这两列是正确的形状,可以替换原始数组中的两列。