如何检测blob并将其裁剪成png文件?

2024-04-26 04:31:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在开发一个网络应用程序。我被困在一个有问题的问题上。 我要解释一下我想做什么。 在这里,你们看到第一个有绿色形状的大图像。 我想做的是将这些形状裁剪成不同的png文件,并使它们的背景透明,就像大的下面裁剪的图像一样。在

Main image the input

Cropped 1.

Cropped 2.

Cropped 3.

第一张图片将由用户上传,我想裁剪成碎片,就像例子裁剪的图片上面。它可以用php的GD库或用python或c编写的服务器端软件完成。但我不知道这个行动叫什么,所以我也不知道谷歌要找什么信息。它涉及到计算机视觉检测水滴并将其裁剪成碎片等。 任何关键字,链接都会有帮助。在

谢谢你的帮助


Tags: 文件用户图像程序png服务器端图片网络应用
3条回答

一个非常简单的方法是使用Flood Fill/Connected Component Labeling。基本上,这只是使用一个贪婪的算法,通过对任何颜色相同或相似的像素进行分组。在

这绝对不是检测斑点的理想方法,而且只能在有限的情况下有效。但是,它更容易理解和编写代码,并且对于您的目的来说已经足够了。在

Opencv提供了一个名为cv::findContours的函数来查找图像中连接的组件。如果总是绿色对白色,您希望cv::split将图像分为多个通道,在蓝色或红色通道上使用cv::threshold(白色区域为白色,绿色区域接近黑色),并使用^{cd1>}(因为您要提取区域),然后使用cv::findContours来检测斑点。然后,可以使用cv::boundingRect计算边界矩形,创建一个该大小的新图像,并使用作为遮罩的轮廓填充新图像。在

注意:这些是C++文档的链接,但是这些函数应该在Python和C.*包装中公开,对于后者,请参阅http://www.emgu.com。在

我相信这篇维基百科文章很好地解决了这个问题:http://en.wikipedia.org/wiki/Blob_detection

但不记得任何现成的解决方案(-:

相关问题 更多 >