【问题标题】:replace mask with original image opencv Python用原始图像opencv Python替换掩码
【发布时间】:2022-01-27 05:33:20
【问题描述】:

我正在尝试用原始图像像素替换我使用蒙版找到的对象。我有一个蒙版,在未检测到物体的地方显示黑色,如果检测到,则显示为白色。然后我在 where 语句中使用图像

image[np.where((image2 == [255,255,255].any(axis = 2)) 

我被困在这里,我不知道如何将找到的白色值更改为原始图像(与其他蒙版一起使用)。我试过image.shape,但没有成功。

谢谢。

【问题讨论】:

    标签: python image opencv where bit-masks


    【解决方案1】:

    制作蒙版的副本,然后根据白色像素坐标在蒙版的白色像素上绘制原始图像。您还可以检查mask == 255 以逐元素进行比较。您不需要 np.where,因为您可以通过 mask == 255 创建的布尔掩码对数组进行索引。

    out = mask.copy()
    out[mask == 255] = original_image[mask == 255]
    

    【讨论】:

      【解决方案2】:

      您可以使用按位运算。试试这个:

      replaced_image = cv2.bitwise_and(original_image,original_image,mask = your_mask)
      

      访问https://docs.opencv.org/3.3.0/d0/d86/tutorial_py_image_arithmetics.html 了解有关按位运算的更多信息

      【讨论】:

        【解决方案3】:
        import os
        import cv2
        from netpbmfile import imread
         
        img_dir = '.'
        mask_dir = '.'
        new_bg = 'image.png'
        
        def get_foreground(fg_image_name, mask_name, bg_image_name):
            fg_image = cv2.imread(fg_image_name)
            mask = imread(mask_name)
            mask_inverse = (1-mask)
            bg_image = cv2.imread(bg_image_name)
            bg_image = cv2.resize(bg_image, (fg_image.shape[1], fg_image.shape[0]))
            foregound = cv2.bitwise_and(fg_image, fg_image, mask=mask)
            background = cv2.bitwise_and(bg_image, bg_image, mask=mask_inverse)
            composite = foregound + background
            
            return composite
        
        
        image_fg = get_foreground(os.path.join(img_dir, "NP1_0.jpg"), os.path.join(mask_dir, "NP1_0_mask.pbm"), new_bg)
        cv2.imwrite("foreground.jpg", image_fg)
        

        【讨论】:

        • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
        猜你喜欢
        • 1970-01-01
        • 2013-09-12
        • 1970-01-01
        • 2018-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多