filter - 仅在边缘应用高斯滤波器
解决方案
在蒙版上应用高斯模糊滤镜时,它仅模糊蒙版的边界。
例子:
import cv2
orig_img = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) # Read image as Grayscale.
blur = cv2.GaussianBlur(orig_img, (15, 15), 0)
如果您想保持遮罩不变,并且只平滑遮罩周围的像素,我建议使用少量迭代,并取最大值。
获取原始图像和模糊图像之间的最大值,确保原始蒙版像素保持不变,因为它们的值是 255(最大可能值)。
这是一个代码示例:
import cv2
orig_img = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) # Read image as Grayscale.
img = orig_img.copy()
for i in range(10):
blur = cv2.GaussianBlur(img, (15, 15), 0)
img = cv2.max(blur, img) # Getting the maximum in order to mask the margins brighter
blur = cv2.max(orig_img, img) # Getting the maximum for keeping the original mask pixels unmodified.
cv2.imshow('blur', blur)
cv2.waitKey()
cv2.destroyAllWindows()
另一种选择是在之前使用形态膨胀GaussianBlur
:
import cv2
orig_img = cv2.imread('mask.png', cv2.IMREAD_GRAYSCALE) # Read image as Grayscale.
img = cv2.dilate(orig_img, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 7)))
blur = cv2.GaussianBlur(img, (15, 15), 0)
blur = cv2.max(blur, orig_img) # Getting the maximum for keeping the original mask pixels unmodified.
cv2.imshow('blur', blur)
cv2.waitKey()
cv2.destroyAllWindows()
推荐阅读
- javascript - JS:类继承是绝对的吗?
- python - 如何提取熊猫数据框列中的字符串部分
- python - Python3中的“在someString中返回someString和partString”
- c# - .NET Core MVC 引导程序“折叠”不起作用
- mysql - SQL查询按两个不同的列过滤结果
- html - 如何将谷歌表格中的特定可编辑单元格嵌入到网站中
- reactjs - 使用 Typescript 在 React 中创建自定义钩子而不传递道具
- coinbase-api - Coinbase API - 无效签名
- python-3.x - 从函数中获取多个变量值或信息的最佳方法
- jquery - MediaWiki API 在 Android 9 (api 28) 之后无法工作