python - 如何更改 OpenCv 中高斯自适应阈值的权重?
问题描述
据我了解,在自适应阈值中,当我们使用 时cv.ADAPTIVE_THRESH_MEAN_C
,它计算块中像素值的平均值,即阈值,当我们使用时cv.ADAPTIVE_THRESH_GAUSSIAN_C
,计算加权平均值。但是我如何查看或更改用于计算加权平均值的权重?
解决方案
您可以使用cv2.getGaussianKernel()
来查看分配给您的功能的权重。
`cv2.get GaussianKernel() 接受 3 个参数:
- kernel_size : 内核大小(必须是奇数)
- sigma:使用的高斯窗口的标准偏差。通过以下公式计算:0.3*((kernel_size-1)*0.5 - 1) + 0.8
- type : 系数的类型(要么
float32
要么float64
)
此页面上提供了此方法的详细信息
例子:
考虑以下作为 的设置cv2.adaptiveThreshold()
:
th3 = cv2.adaptiveThreshold(img,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv.THRESH_BINARY,11,2)
这里的内核大小是11。你可以得到对应的权重如上所说:
cv2.getGaussianKernel(11, 2)
它返回一个中心位置具有最高值的数组:
array([[ 0.00881223],
[ 0.02714358],
[ 0.06511406],
[ 0.12164907],
[ 0.17699836],
[ 0.20056541],
[ 0.17699836],
[ 0.12164907],
[ 0.06511406],
[ 0.02714358],
[ 0.00881223]])
可以通过改变sigma值来更改权重,该值是 中的第二个参数cv2.getGaussianKernel()
:
cv2.getGaussianKernel(11, 3)
返回以下权重:
array([[ 0.03548293],
[ 0.05850147],
[ 0.08630959],
[ 0.1139453 ],
[ 0.13461047],
[ 0.14230046],
[ 0.13461047],
[ 0.1139453 ],
[ 0.08630959],
[ 0.05850147],
[ 0.03548293]])
推荐阅读
- sql-server - 如何将两个模式导出到 Sql Server 中的同一个文件?
- json - 问:如何指定此模式要满足的条件?
- javascript - React:usePrevious 钩子仅在组件中有 1 个状态时才有效。如果有多个状态,如何使其工作?
- python - 熊猫分组但保留原始索引和重复的聚合值
- c# - ASP NET Core Web API 禁用 TLS 1.0 和 TLS 1.1 支持
- caching - 根据时间戳条件删除 Caffeine 条目
- asp.net-core - 查询在 Azure 上超时,但不是来自同一数据库上的本地主机
- ios - 关闭应用程序时,如何将我的新文本输入到 UITextfield 中进行存储?
- vue.js - Vuex 调度会产生大量开销
- python - discord.ext.commands'没有属性'change_presence' Discord.py