[英]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.