【问题标题】:Replacing a segmented part of an image with it's unsegmented part用未分割的部分替换图像的分割部分
【发布时间】:2014-07-19 19:35:30
【问题描述】:

我正在尝试用 Python 中的 OpenCV 将图像的分段部分替换为未分段的部分。图片会让你明白我的意思。

下图为第一张,分割前:

这是分割后的图片:

这是第三张图片,在完成我所说的之后:

我该怎么做?提前感谢您的帮助!

【问题讨论】:

    标签: python opencv image-processing computer-vision image-segmentation


    【解决方案1】:

    这其实很简单。您所要做的就是在分割后拍摄照片,并将其乘以掩码,其中掩码中的任何像素为 0 变为 1,其他任何像素变为 0。

    这实际上将使所有像素变黑,但蒙版中的像素为 1 除外。通过将图像中的每个像素乘以蒙版,您将有效地产生图中所示的内容,但是背景是黑色的。您现在所要做的就是找出掩码中的哪些位置是白色的,并将输出图像中的相应位置设置为白色。换句话说:

    import cv2
    
    # Load in your original image
    originalImg = cv2.imread('Inu8B.jpg',0)
    
    # Load in your mask
    mask = cv2.imread('2XAwj.jpg', 0)
    
    # Get rid of quantization artifacts
    mask[mask < 128] = 0
    mask[mask > 128] = 1
    
    # Create output image
    outputImg = originalImg * (mask == 0)
    outputImg[mask == 1] = 255
    
    # Display image
    cv2.imshow('Output Image', outputImg)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    请注意,我从您的帖子中下载了图片并从我的计算机中加载了它们。此外,由于 JPEG,您的蒙版有一些量化伪影,因此我在强度 128 处设置阈值以确保您的图像由 0 或 1 组成。

    这是我得到的输出:

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      基本上,您有一个分割掩码和一个图像。您需要做的就是复制图像中与标签掩码中的像素相对应的像素。通常,蒙版尺寸和图像尺寸相同(如果不是,您需要将蒙版调整为图像尺寸)。此外,对应于特定掩码的分割像素将具有相同的整数值(1、2、3 等,背景像素将具有值 0)。因此,找出哪些像素坐标具有对应于掩码值的值,并使用这些坐标找出图像中的强度值。如果您知道如何访问像素坐标的语法,在您正在使用的编程环境中读取图像并按照上述过程进行操作,您应该能够做到。

      【讨论】:

        猜你喜欢
        • 2021-11-26
        • 2019-05-24
        • 2014-10-17
        • 1970-01-01
        • 2022-10-17
        • 2011-08-29
        • 1970-01-01
        • 2019-08-06
        • 1970-01-01
        相关资源
        最近更新 更多