python - 为什么在OpenCV中为内核使用一个数组?

标签 python numpy opencv

今天,当我阅读OpenCV文档时,我遇到了一组有趣的功能,称为形态转换。虽然我感觉我对侵 eclipse 和膨胀的概念掌握得很好,但是我无法理解为什么在执行形态转换时为什么要使用1的数组。例如,请参见下面的代码(从Open CV documentation引用),在执行侵 eclipse 时,作者创建了一个装有内核的内核。

import cv2
import numpy as np

img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
erosion = cv2.erode(img,kernel,iterations = 1)

经过一些研究,我了解到腐 eclipse 的潜在作用仅仅是2D卷积,其中将所讨论的像素与相邻像素进行比较,并将内核下方图片的局部最小值设置为像素值。但是,这无助于我弄清楚为什么我们首先将内核设置为保留内核。为什么不为0?为什么不是255?内核的值不应该以任何方式影响卷积,对吗?

最佳答案

将内核值乘以像素值。如果全为0,则输出将为0。如果与1不同,则输出将被您放入内核的值放大。像素值保持为1,ALL保持为1,因为侵 eclipse 过滤器就是这样做的。内核通常是1,0,-1的组合,具体取决于内核的目标。因此,在您的示例中,将5x5 1s的内核乘以5x5子图像(我认为是其像素值的总和)。

关于python - 为什么在OpenCV中为内核使用一个数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62417509/

相关文章:

python - 找出一系列整数中的跳过值

python click 设置选项的允许值

python - pandas/numpy : I have an array with a dictionary inside. 如何从中创建 DataFrame?

python - 如何绘制时间序列,其中 x 轴是 matplotlib 中的 datetime.time 对象?

python - 将 pandas 数据框转换为基于列的订单列表

python - 使用 Scipy 中的solve_ivp() 和动态参数

python - 使用数组作为索引增加 numpy 数组元素

安卓 OpenCV : How to slow down camera capture frame rate (purposefully)

android - 在 Android 的 OpenCV 中从相机获取 Mat 图片

opencv - 实时相机自标定OpenCV