gpt4 book ai didi

python - opencv python 将掩码区域(黑色或白色像素)复制到 BGR 图像区域

转载 作者:太空宇宙 更新时间:2023-11-03 21:13:46 25 4
gpt4 key购买 nike

在 OpenCV python 中,假设我们使用 cv2.imread 读取图像并获得 BGR numpy 数组。接下来我们使用 cv2.inRange 命令生成一个掩码。蒙版具有相同的宽度/高度,每个蒙版像素为黑色或白色。

我想将蒙版中的一个区域(作为黑白像素图像)复制到彩色图像的一个区域上。

我该怎么做?这不起作用

img[10:20,10:20] = mask[10:20,10:20]

我必须先将蒙版转换为 BGR 图像吗?如果是怎么办?

编辑:我不想像 apply mask to color image 那样将整个蒙版应用于图像.另一种表达我想要的方式:将蒙版视为黑白图像。我想将该图像的一个区域(作为一组黑色或白色像素)复制到另一个图像上。生成的图像将是一张彩色图像,除了一个仅包含黑色或白色像素的较小矩形区域。如果我在 photoshop 中复制黑白图像的矩形区域并将该矩形粘贴到彩色图像的区域,结果将类似于。

(我是 OpenCV 新手)

最佳答案

如果您尝试直接使用单 channel (灰度)掩码进行操作,则数组切片的形状将不相同,操作将失败。

>>> img[10:20,10:20] = mask[10:20,10:20]

ValueError: could not broadcast input array from shape (10,10) into shape (10,10,3)

您必须将蒙版转换为 BGR,这将使它成为 3 个 channel ,就像原始图像一样。

>>> bgr_mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
>>> img[10:20,10:20] = bgr_mask[10:20,10:20]

关于python - opencv python 将掩码区域(黑色或白色像素)复制到 BGR 图像区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37573856/

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