繁体   English   中英

屏蔽 python 中的图像

[英]mask out the image in python

我有一个二进制掩码和一个相同大小的图像。 我想掩盖人类。 我使用np.multiply ,但它给出了如下所示的图像,但是,我想要人类,而不是白色像素:.,我绘制了蒙版和图像。 它们是正常的,但它们的乘法并不像我预期的那样。

在此处输入图像描述

import cv2
import os
import numpy as np
masks32x32 = "./DATA/resized_masks/"
images500x500 = "./DATA/resized_imgs/"

masks = os.listdir(masks32x32)
images = os.listdir(images500x500)

for inx, img in enumerate(images):
    img_array = cv2.imread(images500x500+img)
    mask_array = cv2.imread(masks32x32+img)
    mask120x120 = cv2.resize(mask_array,(500,500),interpolation=cv2.INTER_AREA)
    mask120x120 = np.divide(mask120x120, 255)

    masked_image=np.multiply(img_array, mask120x120)
    cv2.imshow("image",masked_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

感谢阿比特博尔。 我使用这个链接解决了这个问题: link

我会把它贴在这里。 也许这对他们有帮助。 我更正了代码如下。 它现在工作正常。

import cv2
import os
import numpy as np
masks32x32 = "./DATA/resized_masks/"
images500x500 = "./DATA/resized_imgs/"

masks = os.listdir(masks32x32)
images = os.listdir(images500x500)

for inx, img in enumerate(images):
    img_array = cv2.imread(images500x500+img)
    mask_array = cv2.imread(masks32x32+img)
    mask500x500 = cv2.resize(mask_array,(500,500),interpolation=cv2.INTER_AREA)
    print(mask500x500.shape)
    print(img_array.shape)

    mask500x500 = cv2.cvtColor(mask500x500, cv2.COLOR_BGR2GRAY)
    #mask500x500 = np.divide(mask500x500, 255)
    mask500x500 = mask500x500.astype(np.uint8)
    masked_image=cv2.bitwise_and(img_array, img_array, mask=mask500x500)
    #masked_image=np.multiply(img_array, mask120x120)
    cv2.imshow("image",masked_image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM