0
我有两个3D numpy阵列,每个阵列都代表一个图像(x,y,rgb)。我想将较小的图像写入较大的图像,除了任何洋红色像素(255,0,255)。我知道如何生成代表所有洋红色像素的2D遮罩 - 我如何在3D阵列操作中使用此2D遮罩?使用2D蒙版将3D numpy阵列写入更大3D阵列的切片
我有两个3D numpy阵列,每个阵列都代表一个图像(x,y,rgb)。我想将较小的图像写入较大的图像,除了任何洋红色像素(255,0,255)。我知道如何生成代表所有洋红色像素的2D遮罩 - 我如何在3D阵列操作中使用此2D遮罩?使用2D蒙版将3D numpy阵列写入更大3D阵列的切片
下面是一个例子。这不完全准确(所有的值都是一两个),但给出了这个想法。希望这部作品在您的情况:
image1 = np.ones((5,5,16))
image2 = 2 * np.ones((3,3,16))
mask = np.array([[0, 1, 1], [0, 0, 1], [1, 0, 0]])
x, y = np.where(mask)
image1[1:4,1:4,:][x,y,:] = image2[x,y,:]
(1:4,1:4
是较大的图像内的子图像的位置)
对于那些试图在numpypy利用这一点,它不会工作 - 显然[1 -arg哪里还没有实现。](https://bitbucket.org/pypy/numpy/issues/41/implementation-of-1-arg-numpywhere)还有另一种方法,pypy有更好的支持机会吗? –