我有两个图像,一个是RGB图像,另一个是包含0和1的掩码图像,以分割指定对象。(两幅图像是同一物体)我想只在第二个矩阵为1的索引处提取初始图像的RBG值,以便最终值仅为具有黑色背景的对象的图像。在numpy中是否有一种简单的方法来实现这一点?
我想在不使用太多for循环的情况下解决这个问题,我认为在numpy中应该有一个直接的方法,但到目前为止我还没有任何运气
您可以使用numpy
的内置广播,然后直接将两者相乘在"pythonic"形式。
import numpy as np
img = np.array([[[ 1, 2, 3],
[ 4, 5, 6]],
[[ 7, 8, 9],
[10, 11, 12]]]) # shape (2, 2, 3)
mask = np.array([[0,1],[0,1]]) # shape (2, 2)
masked_img = img * np.expand_dims(mask, -1)
或者,您可以通过np.newaxis:
扩展掩码尺寸masked_img = img * mask[..., np.newaxis]
可以。
可以使用numpy。正片叠底,从这里开始
例如
img = np.array([
[[1,2],[3,4]],
[[5,6],[7,8]],
[[9,10],[11,12]]
])
mask = np.array(
[[0,1],[0,1]]
)
print(np.array([
np.multiply(img[0],mask),
np.multiply(img[1],mask),
np.multiply(img[2],mask)]
))
# Res:
#[[[ 0 2]
# [ 0 4]]
#
# [[ 0 6]
# [ 0 8]]
#
# [[ 0 10]
# [ 0 12]]]