繁体   English   中英

用未分割的部分替换图像的分割部分

[英]Replacing a segmented part of an image with it's unsegmented part

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

下图是第一张,分割前:

第一张图(分割前)

这是分割后的图片:

第二张图(分割后)

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

第三张图(这就是我的想法)

我怎样才能做到这一点 ? 在此先感谢您的帮助 !

这实际上很容易。 您所要做的就是在分割后拍摄您的照片,并将其乘以一个掩码,其中掩码中任何为 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 组成。

这是我得到的输出:

在此处输入图片说明

希望这可以帮助!

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

暂无
暂无

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

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