python - 如何根据分割图对图像进行模糊处理

标签 python opencv blur image-segmentation

如果我因为不是母语而无法很好地解释,请原谅我。

我正在根据分割图的白色部分来模糊图像的部分。例如,这是我的分割图像(bmp 图像)。 segmented image .

现在我想要的是模糊原始图像中分割图中像素为白色的部分。我刚刚编写了以下代码。

mask = mask >= 0.5
mask = np.reshape(mask, (512, 512))

mh, mw = 512, 512
mask_n = np.ones((mh, mw, 3))

mask_n[:,:,0] *= mask
mask_n[:,:,1] *= mask
mask_n[:,:,2] *= mask

# discard padded area
ih, iw, _ = image_n.shape

delta_h = mh - ih
delta_w = mw - iw

top = delta_h // 2
bottom = mh - (delta_h - top)
left = delta_w // 2
right = mw - (delta_w - left)

mask_n = mask_n[top:bottom, left:right, :]


# addWeighted
image_n = image_n *1 +   cv2.blur(mask_n * 0.8, (800, 800))

请帮助我,谢谢。

最佳答案

您可以按照以下步骤进行操作:

  1. 加载原始图像和 mask 图像。
  2. 模糊整个原始图像并将其保存在不同的变量中。
  3. 使用 np.where() 方法从蒙版中选择要模糊值的像素,然后替换它。

请参阅下面的示例代码:

import cv2
import numpy as np

img = cv2.imread("./image.png")
blurred_img = cv2.GaussianBlur(img, (21, 21), 0)
mask = cv2.imread("./mask.png")

output = np.where(mask==np.array([255, 255, 255]), blurred_img, img)
cv2.imwrite("./output.png", output)

关于python - 如何根据分割图对图像进行模糊处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039717/

相关文章:

python - 使用 OpenCV (python) 时如何隐藏/禁用 ffmpeg 错误?

c++ - 提高图像处理速度

python - 如何关闭 GitHub API 的问题

javascript - 将 Python 中的行转换为 JavaScript : [(M[i], k//M[i])]

python - 带 if 条件和不带 if 条件的切片

python - 从精巧的边缘获取边界并删除图像的背景

javascript - JS/jQuery - 当用户点击 "Enter"时,blur() 不会触发?

css - 使用 CSS3 模糊滤镜时图像周围出现白色模糊?

Java Graphics2D : semi-transparency turns black when using blur filter on shape

python - PySide QGLBuffer 分配输入数据