无法同时使用 cv2 和 numpy 向图像添加蒙版
Unable to add mask to an image using both cv2 and numpy
这是原图:
plt.imshow(new_image)
这个数组是由语义分割模型生成的:
print(image_mask)
array([[2, 2, 2, ..., 7, 7, 7],
[2, 2, 2, ..., 7, 7, 7],
[2, 2, 2, ..., 7, 7, 7],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]])
当使用 matplotlib 将其绘制为图像时,它会添加假颜色并制作图像:
plt.imshow(image_mask)
要将其更改为我所做的图像:
image_mask_copy = image_mask.copy()
np.place(image_mask_copy,image_mask_copy!=15,[0]) # REMOVE ALL EXCEPT PEOPLE, == 0
np.place(image_mask_copy,image_mask_copy==15,[255]) # MAKE PEOPLE == 255
new_image_mask = np.expand_dims(image_mask_copy,-1)*np.ones((1,1,3))
plt.imshow(new_image_mask)
但是当我尝试做 cv2.bitwise_and
时,我又得到了原始图像,而不是只有人的图像...:[=22=]
new_image = cv2.bitwise_and(image,image,new_image_mask)
plt.imshow(new_image)
当我尝试 numpy 时我得到了掩码..:[=22=]
image_mask_copy = image_mask.copy()
np.place(image_mask_copy,image_mask_copy!=15,[0])
np.place(image_mask_copy,image_mask_copy==15,[1]) #NOTICE 1 NOT 255
new_image = np.multiply(new_image_mask,image)
plt.imshow(new_image)
我不明白为什么会这样...请帮忙
bitwise_and takes 3 arguments. cv2.bitwise_and(src1, src2, mask)
并计算掩码中 != 0 的每个像素的 src1 和 src2 的 bitwise_and。
https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html
尝试
new_image = cv2.bitwise_and(image,new_image_mask)
plt.imshow(new_image)
而不是
new_image = cv2.bitwise_and(image,image,new_image_mask)
plt.imshow(new_image)
这是原图:
plt.imshow(new_image)
这个数组是由语义分割模型生成的:
print(image_mask)
array([[2, 2, 2, ..., 7, 7, 7],
[2, 2, 2, ..., 7, 7, 7],
[2, 2, 2, ..., 7, 7, 7],
...,
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0],
[0, 0, 0, ..., 0, 0, 0]])
当使用 matplotlib 将其绘制为图像时,它会添加假颜色并制作图像:
plt.imshow(image_mask)
要将其更改为我所做的图像:
image_mask_copy = image_mask.copy()
np.place(image_mask_copy,image_mask_copy!=15,[0]) # REMOVE ALL EXCEPT PEOPLE, == 0
np.place(image_mask_copy,image_mask_copy==15,[255]) # MAKE PEOPLE == 255
new_image_mask = np.expand_dims(image_mask_copy,-1)*np.ones((1,1,3))
plt.imshow(new_image_mask)
但是当我尝试做 cv2.bitwise_and
时,我又得到了原始图像,而不是只有人的图像...:[=22=]
new_image = cv2.bitwise_and(image,image,new_image_mask)
plt.imshow(new_image)
当我尝试 numpy 时我得到了掩码..:[=22=]
image_mask_copy = image_mask.copy()
np.place(image_mask_copy,image_mask_copy!=15,[0])
np.place(image_mask_copy,image_mask_copy==15,[1]) #NOTICE 1 NOT 255
new_image = np.multiply(new_image_mask,image)
plt.imshow(new_image)
我不明白为什么会这样...请帮忙
bitwise_and takes 3 arguments. cv2.bitwise_and(src1, src2, mask)
并计算掩码中 != 0 的每个像素的 src1 和 src2 的 bitwise_and。
https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html
尝试
new_image = cv2.bitwise_and(image,new_image_mask)
plt.imshow(new_image)
而不是
new_image = cv2.bitwise_and(image,image,new_image_mask)
plt.imshow(new_image)