当前位置: 首页 > 知识库问答 >
问题:

如何使用OpenCV选择性地应用扩张?

尉迟卓
2023-03-14

实际上,我想要以下二进制图像上的“白色”像素的五个外部边界框。所需的区域用红色突出显示。

要获得第5个边界框,我会放大或模糊它。但是,膨胀会将区域3与区域1和2合并,因此我将获得一个几乎覆盖整个图像的边界框。(如果我不放大或模糊它,那么cv::findContorscv::boundingRect将产生大量的小矩形。)

换句话说,我只想要“足够大”的边界框。

这只是一个样本模式。分区的位置可能会有所不同。有没有一种方法可以从总体上解决这个问题?

共有1个答案

丁翰海
2023-03-14

膨胀是在每像素的基础上进行的,不考虑像素所属组件的大小。

如果只想对小水滴应用膨胀,则需要在应用膨胀之前移除大水滴。

因此,使用findContours提取所有轮廓,然后将“足够大”的所有轮廓存储在列表中,并在源图像中将其绘制为黑色。然后放大修改后的源并提取剩余轮廓。

请注意,为了获得正确的边界框大小,您可能需要的是形态学上的闭合(扩张后有相同数量的侵蚀),而不是仅仅扩张。

 类似资料:
  • 日志记录对此应用程序非常重要。需要在开始正常操作之前始终初始化日志系统(以确保完全的可跟踪性)。应用程序使用一个安全的日志系统,该系统需要一个密钥来初始化日志(使用该密钥对日志进行签名,以防止篡改日志)。还有一个要求,即日志记录密钥应该上传到每个服务。每个后端服务都有一个用于接收日志记录密钥的endpoint。 有一个“鸡还是蛋”类型的问题。应用程序需要运行才能接收密钥,但在接收密钥之前,应用程序

  • 我想知道如何为添加排除。IE和Chrome似乎用appcache做了正确的事情,而不管我的头是什么,但FF似乎更奇怪一点,它注意到appcache何时发生了变化,我认为我的缓存头搞砸了。 编辑:我应该从WebMvcAutoConfiguration的源代码中添加,它显示了如何为资源设置缓存,我只是不确定如何选择性地禁用我的1case W/O,这可能会破坏spring boot在该文件中设置的其余内

  • 问题内容: 我想使用Hibernate选择单列而不是整个对象。到目前为止,我有这个: 我的问题是上述代码将整个People表返回为一个对象,而不仅仅是“ firstname”。我不确定如何指定仅返回“名字”而不是整个对象。 问题答案: 您可以像这样设置投影: 有了这个,您只能得到名字的回报。 我在同一情况下在堆栈上找到了另一个链接。希望这也将对您有所帮助。

  • 我正在使用Selenium web驱动程序开发一个使用Chrome作为我的浏览器的自动化测试。我使用的是Python。

  • 问题内容: 我是Jenkins的新手,所以这可能很简单。我安装了扩展选择参数插件。我正在使用“多重选择”参数类型从服务器列表(SERVER1,SERVER2,SERVER3)中进行选择,我已将“源”设置为“值”,“默认值”和“值描述”。 我保存了,看起来很棒。我可以选择任何或所有服务器进行构建。现在是一个大问题。如何在构建中使用这些值?基本上,我在构建过程中采取了一个步骤,该步骤可以接受用逗号分隔