您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

openCV和python:边界外的形态转换

openCV和python:边界外的形态转换

如OpenCV文档所报告的morphologyEx

C ++:void morphologyEx(InputArray src,OutputArray dst,int op,InputArray内核,点锚点= Point(-1,-1),int迭代次数= 1,int borderType = BORDER_CONSTANT,const Scalar&borderValue = morphologyDefaultBorderValue())

Python:cv2.morphologyEx(src,op,kernel [,dst [,anchor [,迭代[,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(对于 dilate )或255(对于 糜烂 )。

请注意,所有其他形态操作是 扩张腐蚀的 不同序列。

在中FilterEngine,实际上执行形态操作的边界长度定义为:

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

ksize结构元素的大小在哪里。

因此,认情况下,OpenCVborderLength使用特定的值创建所需的附加边界(根据内核是正确的)。该值保证了跨边界的形态操作是一致的。

python 2022/1/1 18:29:27 有230人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶