当前位置: 首页 > 面试题库 >

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

丘畅
2023-03-14
问题内容

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

例如,openCV如何确定边界外的内核元素以进行扩展?它会忽略它们还是使用其邻居的值?


问题答案:

如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使用特定的值创建所需的附加边界(根据内核是正确的)。该值保证了跨边界的形态操作是一致的。



 类似资料:
  • 我正在做一个WebGL(带有2d画布后备照片编辑器)。 我决定将旋转直接纳入裁剪工具,以类似于iOS8照片裁剪器的方式。也就是说,当您旋转照片时,照片的大小和位置会动态变化,以便裁剪区域始终包含在照片本身中。 但是,我正在为一些数学而苦苦挣扎。 我有两个矩形,照片和裁剪区域。 两者都被定义为: 定义照片本身的矩形也有一个以弧度表示的< code>rotation属性,它当然描述了照片的角度(以弧度

  • 问题内容: 我有一幅包含多个边界框的图像。 我需要提取其中包含边界框的所有内容。到目前为止,从这个站点我已经得到了这个答案: 它有效,但是只有一个。我应该如何修改代码?我尝试将其放在轮廓循环中,但它仍会喷出一个图像而不是多个图像。 提前非常感谢您。 问题答案: 你去那里:

  • 我正在为我的播放器和bullet类创建一些围绕精灵的矩形,以使用LibGDX的Intersector类中的重叠方法检测碰撞。 我有一个问题: 当我实例化Player和Bullet时,我使用sprite.getBoundingRectangle()在精灵周围创建一个边界框,它返回一个Rectangle对象。我在主类的其他地方更新这些的移动。 当我更新子弹/玩家精灵的移动时,我是否也需要更新子弹/玩家

  • 问题内容: 而闭合多边形的坐标是 . 我要区域边界 通过使用opencv裁剪的凹多边形。我找了其他类似的 但我没能找到正确的答案。所以我才这么问? 你能帮助我吗。 任何帮助都将不胜感激。!!! 问题答案: 步骤 使用多边形点查找区域 使用多边形点创建遮罩 做口罩修剪 如果需要,添加白色背景 代码:

  • 主要内容:示例在前面的章节中,我们讨论了侵蚀和扩张的过程。 除了这两个,OpenCV还有更多的形态转换。 类的方法的用于在给定的图像上执行这些操作。 以下是这种方法的语法 - 该方法接受以下参数 - src - 表示此操作的源(输入图像)的对象。 dst - 表示此操作的目标(输出图像)的对象。 op - 表示形态操作类型的整数。 kernel - 表示卷积核的对象。 示例 下面的程序演示了如何使用OpenCV

  • 本文向大家介绍Opencv实现最小外接矩形和圆,包括了Opencv实现最小外接矩形和圆的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Opencv实现最小外接矩形和圆的具体代码,供大家参考,具体内容如下 步骤:将一幅图像先转灰度,再canny边缘检测得到二值化边缘图像,再寻找轮廓,轮廓是由一系列点构成的,要想获得轮廓的最小外接矩形,首先需要得到轮廓的近似多边形,用道格拉斯-普克抽稀(