我前几天刚开始学习numpy和Python,所以如果我犯了什么明显的错误,我很抱歉。
基本上,我想把下面的for循环转换为一个更快的解决方案,我知道这可以用numpy来完成,只是不知道怎么做。我知道这可以用numpy来完成,只是不知道怎么做。
img = np.zeros((height,width,3), np.uint8) #image matrix
indexes = np.zeros((height,width), np.uint8)
for y in range(height):
for x in range(width):
img[y][x] = vid[indexes[y][x]][y][x] #for 1 pixel
#"vid" is a 4d array with vid[frameNumber] being one image.
谢谢你的帮助。
你可以通过以下方法使用索引数组 np.ogrid
:
y, x = np.ogrid[:height, :width]
img = vid[indexes[y, x], y, x]
我会的
y,x = np.meshgrid(np.arange(height),np.arange(width))
img = vid[indexes, y, x]
print(img.shape)
# output (height, width, 3)