【问题标题】:Unable to add mask to an image using both cv2 and numpy无法同时使用 cv2 和 numpy 向图像添加蒙版
【发布时间】:2020-08-14 10:20:04
【问题描述】:

这是原图:

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 时,我再次得到原始图像,而不是只有人的图像......:

new_image = cv2.bitwise_and(image,image,new_image_mask)
plt.imshow(new_image)

当我尝试 numpy.. 时,我得到了面具:

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)

我不明白为什么会这样……请帮忙

【问题讨论】:

    标签: python numpy image-processing mask cv2


    【解决方案1】:
    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)
    

    【讨论】:

    • 我收到此错误:OpenCV(3.4.2) /tmp/build/80754af9/opencv-suite_1535558553474/work/modules/core/src/arithm.cpp:223: error: (-209 :输入参数的大小不匹配)操作既不是'array op array'(其中数组具有相同的大小和类型),也不是'array op scalar',也不是函数'binary_op'中的'scalar op array'
    • print(new_image_mask.shape,image.shape) print(type(new_image_mask),type(image)) (720, 1280, 3) (720, 1280, 3)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-23
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 2021-10-03
    • 2021-08-03
    • 2021-06-02
    相关资源
    最近更新 更多