【问题标题】:create new grayscale mask image by merging two other masks in python通过在python中合并其他两个蒙版来创建新的灰度蒙版图像
【发布时间】:2020-11-04 00:58:11
【问题描述】:

我有两个蒙版,想要的蒙版结果如下图:

2 original masks and the desired result

我想通过组合前 2 个蒙版来创建所需的蒙版结果。但是,如果它们重叠,我只想生成白色区域。如果它们不重叠,则该区域应保持黑色。我不确定如何继续。

目前我已经通过 cv2 导入了图像,并根据原始图像的尺寸创建了第三个 numpy 数组。然后,我遍历两个掩码并根据两个值(255 或 0)是否相同设置条件。如果是,那么我想将它们存储或设置在新掩码中...:

necrosis_mask_observer_1 = cv2.imread(mask1, 0)
necrosis_mask_observer_2 = cv2.imread(mask2, 0)

map = np.empty(necrosis_mask_observer_1.shape)

height, width = map.shape

# do something here?

for i in range(width):
     for j in range(height):

         necrosis_mask_observer_1_sum = necrosis_mask_observer_1[j : (j+1), i : (i+1)].sum()
         necrosis_mask_observer_2_sum = necrosis_mask_observer_2[j : (j+1), i : (i+1)].sum()

         if necrosis_mask_observer_1_sum == necrosis_mask_observer_2_sum:

         #do something here?
         else:
              continue 


【问题讨论】:

  • 这些实际上是灰度还是黑白?
  • 您能否将图像缩小为玩具示例,然后手动构建示例输出以显示您期望的结果?
  • 听起来你想要一个带有floodfill的“和”操作
  • 另外,请正确缩进您的代码。
  • 目前,这里还不够。我不明白你想要什么足以回答。在您编辑问题之前,我将不得不提交我的近距离投票。

标签: python numpy opencv mask cv2


【解决方案1】:

您可以通过 Python/OpenCV 中的按位和运算来做到这一点。

面具1:

面具2:

import cv2

# read mask 1
mask1 = cv2.imread('mask1.png')

# read mask 2
mask2 = cv2.imread('mask2.png')

# combine mask
mask3 = cv2.bitwise_and(mask1,mask2)

# save result
cv2.imwrite("mask3.png",mask3)

# show result
cv2.imshow('mask3', mask3)
cv2.waitKey(0)

组合面膜:

【讨论】:

    猜你喜欢
    • 2023-02-18
    • 1970-01-01
    • 2018-04-16
    • 2013-07-20
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    相关资源
    最近更新 更多