使用opencv获得其蒙版后如何模糊图像?

时间:2019-02-08 08:04:22

标签: python opencv image-processing

我遵循了有关基于颜色分割的图像模糊指南:https://realpython.com/python-opencv-color-spaces/

但是我很难让它仅模糊原始图像中的尼莫。

到目前为止,我还没有遵循指南:

import matplotlib.pyplot as plt
import cv2

nemo = cv2.imread('nemo.png')
nemo = cv2.cvtColor(nemo, cv2.COLOR_BGR2RGB)
hsv_nemo = cv2.cvtColor(nemo, cv2.COLOR_RGB2HSV)

light_orange = (1, 190, 200)
dark_orange = (18, 255, 255)
light_white = (0, 0, 200)
dark_white = (145, 60, 255)

mask = cv2.inRange(hsv_nemo, light_orange, dark_orange)
mask_white = cv2.inRange(hsv_nemo, light_white, dark_white)
final_mask = mask + mask_white

final_result = cv2.bitwise_and(nemo, nemo, mask=final_mask)
blur = cv2.blur(final_result, (15, 15), 0)

我已绘制出1)nemo,2)final_mask和3)blur进行比较:Image Result

我是否有办法使原始照片中的尼莫模糊,使其看起来像这样:Blurred Original Photo

目前,它只模糊蒙版图像中的尼莫。

我认为我需要为此获得投资回报率,但是如何在蒙版和从原始照片中获得尼莫的坐标/投资回报率之间建立关系?谢谢!

1 个答案:

答案 0 :(得分:1)

如果您只想在蒙版为真的情况下模糊图像,则应该可以使用这种方法

blur = cv2.blur(nemo,(15,15),0)
out = nemo.copy()
out[mask>0] = blur[mask>0]

但是,您可能要更改蒙版的生成方式,因为当前它只会使鱼的橙色和白色部分模糊。