【问题标题】:OpenCV: Object detectionOpenCV:物体检测
【发布时间】:2015-02-23 14:09:55
【问题描述】:

我的问题是关于任务的可行性

请注意,我已经阅读了这个question 的解决方案,但是你可以猜到我在这里不是在处理矩形和相机。

情况:

我需要将很多图片保存在一个文件夹中,所有图片都遵守这些规则:

  • 每张图片中只有一个对象。
  • 对象可以是任何东西(汽车、马、人手……)
  • 图片的大小和格式属于某个集合。
  • 对象的背景始终为白色。
  • 对象本身的颜色可以是其他任何颜色(包括,为什么不包括白色像素区域)

目标:

我想检测每张图片的对象是否居中

开发环境:

  • Python
  • OpenCV

你认为这可行吗?

我希望我的问题不会太宽泛。我只是问这是否可以自动完成而无需对图片进行人工干预。我有成千上万的。程序会将对象未居中的图片保存在单独的文件夹中。

编辑:

按照上面的 cmets 和回答:对我来说,如果我在它周围画一个正方形或矩形,那么居中的对象就是那个对象,正方形/矩形的边缘必须与图像的 let 和右侧等距,而对象的顶部和底部与图片的顶部和底部的距离必须相等。

【问题讨论】:

  • 背景是纯白色,还是一些拍照的白色,可能带有阴影之类的东西?这个任务听起来很可行,但最终它真的取决于图像的“质量”......另一个问题可能是对于不对称的“对象”的“居中”的定义。
  • @Micka 是的,背景是纯白色的。
  • 所以只需转换为灰度,然后将图像阈值
  • @Micka 非常感谢。这是另一种有趣的方法。

标签: python opencv object-detection


【解决方案1】:

是的,这是非常可行的。但是,根据图像包含的对象类型,它们是实现此目的的不同方法。假设图像中的对象都具有统一的颜色,您可以轻松地执行颜色检测算法,以像素为单位找到对象的中心点,并使用图像分辨率作为参考找到它的位置。

由于指定的背景始终为白色,这可能是您最好的方法,因为您可以提取图像中的所有非白色(或不同的白色阴影)对象。

如果你决定采用这种方法,我应该能够为你指出一些相关的代码

虽然是用 c++ 编写的,但可以在下面的链接中找到更多信息。

http://opencv-srf.blogspot.co.uk/2010/09/object-detection-using-color-seperation.html

该链接基于视频中的对象检测,但由于视频只是一系列图像,因此可以在图像上使用相同的概念

【讨论】:

  • 正如 Micka 所提到的,根据对象的不对称程度,可能无法获得对象的确切中心。
  • 图像的对象可以有统一的颜色,但是它们可以是多色的,甚至在它们内部也有一些白色区域
  • 对象内部的白色区域可以通过指定可以忽略小于一定大小的任何白色区域或假设有不同的白色阴影来过滤掉。这应该只过滤背景。假设对象的白色部分都被彩色部分包围,此方法应该可以工作。
  • 您能否编辑您的答案以给我一个链接或简要解释一下您的意思:对象的中心点(以像素为单位)并使用图像分辨率找到它的位置参考文献。 ?
  • 下划线问题在于对象的对称性。你如何找到像椅子这样的东西的中心点
猜你喜欢
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 2012-12-30
  • 2016-05-28
  • 1970-01-01
相关资源
最近更新 更多