python - 如何在模糊图像的同时使用不同的内核形状?
问题描述
我想使用快速模糊功能,cv2.GaussianBlur()
但它只允许矩形内核形状。有没有办法使用椭圆核形状?如果任何其他模糊功能允许,您能否建议该功能?
解决方案
不要依赖内置内核或 opencv 的内置函数,而是使用 cv2.filter2D() 函数将您选择的自定义内核与您选择的值一起应用!有了这个,您不仅可以应用您提到的“椭圆”内核,还可以应用您想要的任何内核。
这是用法:
import cv2
import numpy as np
img = cv2.imread('image.png')
kernel = np.ones((5,5),np.float32)/25
dst = cv2.filter2D(img,-1,kernel)
所以在上面的代码中,一个看起来像这样的内核:
用来。
现在,如果您想要一个“椭圆”内核,您可以手动构建一个 np 数组(即内核),在每一行和每列中使用自定义值,或者您可以使用 cv2 的 cv2.getStructuringElement 函数为您构建椭圆内核,然后您可以在 filter2D() 函数中使用这个内核。
cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(5,5))
上面的函数将打印:
[[0, 0, 1, 0, 0],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 1],
[0, 0, 1, 0, 0]]
这是你的椭圆内核!
推荐阅读
- javascript - 是否可以在 Selenium 或 Puppeteer 等自动化软件中读取传入的 HTTP 请求?
- javascript - Kendo UI Tabstrip:单击该选项卡内的按钮后,选项卡应呈现网格
- amazon-web-services - 成功上传到 AWS S3,但说存储桶仍然是空的
- python - ImportError Cryptography python's module
- r - Dplyr / tidyverse 如何首先按可用值的数量对列进行排序,然后按字母顺序对列进行排序?
- swift - JSONDecoder 无法在 *Mac* 上解码 *value/fragment* 类型
- typescript - 使用函数测试返回对象的函数 - JavaScript (Jest)
- java - Android Studio:文件写入另一个目录
- escaping - 转义字符串和原始字符串之间的区别?
- amazon-web-services - EC2 domain name ERR_CONNECTION_TIMED_OUT