今天,当我阅读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/