gpt4 book ai didi

python - 使用掩码创建彩色背景 - 在掩码为真的情况下无法分配 3 个输入值的错误

转载 作者:行者123 更新时间:2023-12-02 17:17:29 26 4
gpt4 key购买 nike

我正在尝试在我蒙面的头部周围创建一个 RGB 背景颜色。

mask = np.ones(image.shape)
mask = cv2.drawContours(mask, [c], -1, 0, cv2.FILLED)

output = image.copy()
output[mask != 0] = (255,0,0)

但我收到以下错误:
ValueError: NumPy boolean array indexing assignment cannot assign 3 input values to the 143184 output values where the mask is true
它在使用单个输入时起作用:
mask = np.ones(image.shape)
mask = cv2.drawContours(mask, [c], -1, 0, cv2.FILLED)

output = image.copy()
output[mask != 0] = 0

并给出正确的掩蔽:
masking
但是,理想情况下,我希望背景为红色,因此当我稍后使背景透明时,它不会影响脸部的任何东西。
将不胜感激任何帮助

最佳答案

简单回答:制作 mask单 channel 。

mask = np.ones(image.shape[:2])
解释:
这是因为您的 maskimage 的形状相同你试图用三个替换每一个值。如果你想每三个值替换一次,你应该构建一个查询,每个操作可以访问三个。
在您的代码中 output[mask != 0] = anything看跌 anything而不是每个 channel 的每个值,但前提是它适合形状。
假设您的图像是 400x300 像素 RGB(或 BGR,无论有 3 个 channel ),所以它的形状是 400x300x3。由于面具是相同的形状,条件 mask != 0指向每个 channel 的每个值。当掩码为单 channel 时,条件完全指向每个像素,然后您可以将 3 个现有值替换为 3 个期望值(仍保持形状)。

关于python - 使用掩码创建彩色背景 - 在掩码为真的情况下无法分配 3 个输入值的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64087299/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com