gpt4 book ai didi

python - openCV 和 python : Morphological transformation outside boundaries

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:43 24 4
gpt4 key购买 nike

我正在使用 python 和 OpenCV。我有一个(矩形或任何东西)内核并试图执行一些形态转换。我的问题是图像边界如何?

例如,openCV如何决定在kernel的边界外的元素进行dilation?它会忽略它们还是使用其邻居的值?

最佳答案

据 OpenCV 文档报告 morphologyEx :

C++: void morphologyEx(InputArray src, OutputArray dst, int op, InputArray kernel, Point anchor=Point(-1,-1), int iterations=1, int borderType=BORDER_CONSTANT, const Scalar& borderValue=morphologyDefaultBorderValue() )

Python: cv2.morphologyEx(src, op, kernel[, dst[, anchor[, iterations[, borderType[, borderValue]]]]]) → dst

您会看到该函数默认创建一个具有常量值的边框。该值取决于形态学操作的类型,由 morphologyDefaultBorderValue() 定义:

//! returns "magic" border value for erosion and dilation. 
//! It is automatically transformed to Scalar::all(-DBL_MAX) for dilation.
static inline Scalar morphologyDefaultBorderValue() { return Scalar::all(DBL_MAX); }

然后将针对实际的矩阵类型进行更正。因此,对于 CV_8U 矩阵,边界值为 0(对于扩张)或 255(对于侵 eclipse )。

请注意,所有其他形态学操作都是膨胀腐 eclipse 的不同序列。

边框长度在实际执行形态学操作的FilterEngine中定义为:

 int borderLength = std::max(ksize.width - 1, 1);

其中 ksize 是结构元素的大小。

因此,默认情况下,OpenCV 使用特定值创建所需的额外边界(根据内核的正确 borderLength)。该值保证形态学操作跨边界一致。

关于python - openCV 和 python : Morphological transformation outside boundaries,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32563861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com