当前位置: 首页 > 知识库问答 >
问题:

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

师增
2023-03-14

在OpenCV python中,假设我们用cv2.imread读取一个图像,并得到一个BGR numpy数组。接下来我们使用cv2.inrange命令生成一个掩码。掩模具有相同的宽度/高度,并且每个掩模像素要么是黑色的,要么是白色的。

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

我必须先将掩码转换成BGR图像吗?如果是,怎么做?

编辑:我不想像在将蒙版应用到彩色图像中那样将整个蒙版应用到图像上。另一种表达我所想要的方式:将面具视为一个黑白图像。我想将该图像的一个区域(作为一组黑色或白色像素)复制到另一个图像上。得到的图像将是彩色图像,除了一个较小的矩形区域,该区域仅包含黑色或白色像素。结果将类似于我在photoshop中复制一个黑白图像的矩形区域,并通过该矩形到一个彩色图像的区域。

(我是OpenCV的新手)

共有1个答案

路思源
2023-03-14

如果尝试直接用单通道(灰度)掩模来做,数组切片的形状将不相同,操作将失败。

>>> 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个通道,像原始图像。

>>> bgr_mask = cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR)
>>> img[10:20,10:20] = bgr_mask[10:20,10:20]
 类似资料:
  • 从原始图像中我们可以看到,我的ROI是白色的棉花圈在红色的边界中。当我分割这幅图像时,我得到了如图所示的二值图像。我们注意到,与原始图像相比,二值图像中存在一些缺失区域。因此,我要计算ROI的原始图像的像素数和二值图像中白点的像素数。这样我就可以计算ROI的实际像素和实际分割的像素数量的差异。 谢谢你。

  • “黑白”调整可让您将彩色图像转换为灰度图像,同时保持对各颜色的转换方式的完全控制。也可以通过对图像应用色调来为灰度着色,例如创建棕褐色效果。 执行下列操作之一: 单击“调整”面板中的“黑白”图标 。 选取“图层”>“新建调整图层”>“黑白”。在“新建图层”对话框中,键入调整图层的名称,然后单击“确定”。 Photoshop 会应用默认的灰度转换。 注意:也可以选择“图像”>“调整”>“黑白”。但是

  • 我已经在网上搜索过了,我已经找到了一些方法来做我想做的事情,但是与我需要的相比,这些方法在效率上失败了。 我有一个kinect(使用Microsoft SDK),它当前正在获取一个删除背景的人,将结果保存在一个3通道的垫子中,并将该人从背景中删除。现在我需要裁剪图像以只适合那个人,忽略黑色区域。 这里是棘手的部分:我没有很多时间浪费在每个操作上(我还需要做其他几个操作,这应该是实时工作。我目前实现

  • 问题内容: 我有一幅颜色为BGR的图像。如何转换我的PIL图像,以有效地交换每个像素的B和R元素? 问题答案: 假设没有阿尔法谱带,难道就这么简单吗? 编辑: 嗯…似乎PIL在这方面有一些错误…似乎不适用于最新版本的PIL(1.1.7)。它可能(?)仍可与1.1.6一起使用,但是…

  • 我尝试使用PDFBox将BuffereImage中的图像绘制到PDF中,但失败了,我得到了黑色图像,Acrobat Reader发出警告,其中有“内存不足”之类的错误(但PDF是显示的)。 我使用BuffereImage是因为我需要将JavaFX图像对象(来自对Functiones.crearImagenDesdeTexto()的调用,是一个将文本转换为图像的函数)绘制成PDF。其余图像在不使用B