OpenCV操作会阻碍NumPy算术吗?

时间:2018-10-04 19:14:46

标签: python numpy opencv

我正在尝试使用NumPy和OpenCV执行对象匿名化。目的是通过使用遮罩隔离面部,使所述内容模糊化,然后将结果合并到另一幅图像来使面部匿名。通过反转遮罩并将其应用于源图像可以得到另一个图像。这两部分通过加法合并。

FALSE

让我们在一个玩具示例中对此进行测试:

def apply_mask(image, mask):
    return np.multiply(image, mask)

在这里我们创建了一个对象,使mask.inverted_array_label是一个256x256单色图像,所有像素强度均为零,除了具有左上角(64,64)和右下角(192,192)的矩形。此矩形中的所有像素的强度均为1。

image = np.random.randn(256,256)
mask = Mask(256, 256, [64, 64, 192, 192])

So far, so good . . .

现在,我们将高斯模糊应用于倒置蒙版,然后将结果应用于原始图像。 。

kernel_size = (121,121)
X = apply_mask(image, mask.inverted_array_label)
X = cv2.GaussianBlur(X, kernel_size, 0)
plt.imshow(X, cmap="gray")

enter image description here

现在我想将第一张图像添加到第二张图像。

opp_mask = cv2.GaussianBlur(mask.array_label, kernel_size, 0)
Y = apply_mask(image, opp_mask)
plt.imshow(Y, cmap="gray")

算术检验:

Z = np.zeros(X.shape)
Z = np.add(X,Y)
plt.imshow(Z, cmap="gray")
num = 190
print(X[num,num], Y[num,num], Z[num,num])
w1 = X[num, num]
w2 = Y[num, num]
w3 = w1+w2
print(w1,w2,w3)

但是,图像未按预期更改:

enter image description here

我想念什么?如何正确添加这两个数组?

0 个答案:

没有答案