Opencv透明对象检测

时间:2015-05-29 10:57:39

标签: c++ opencv pattern-matching transparent object-detection

在过去的4天里,我试图通过实时视频输入检测各种形状和尺寸的透明玻璃板......由于我无法使用颜色跟踪来检测透明度,因此我在网上搜索了解大轮廓检测,匹配形状,匹配模板...但我的尝试未能得到我的结果...我的朋友告诉使用哈尔级联做它..,我需要知道的是,

  1. 有更好的方法来检测透明物体而不是做轮廓......

  2. 我错过了一些非常基本的东西......

  3. haar cascade是获得结果的更好的候选人......

  4. P.S:我正在使用MS Visual studio和c ++来编写代码...而且我只使用opencv lib只有5天了......你的帮助对我来说意味着很多......

2 个答案:

答案 0 :(得分:1)

您可以尝试使用this answer中提到的方法(或只阅读this article)。它是专为检测玻璃而设计的,但我认为它适用于大多数透明物体,或者至少会给你一个很好的起点。

答案 1 :(得分:0)

Haar Cascade Training是一种机器学习方法,用于训练一些数据并发送稍后查询您想说的内容"是"或"不"。 (这对于更多的事情很有用,但这是你正在寻找的东西。)

好吧,当我被教授机器学习时,我的老师说了如下:

  

当您无法以编程方式实现机器学习时,机器学习会被用作方法,或者代码效率低下或者很长时间,而这些代码可以从您可以获得的变量数量中获得"从你的条件。

分析你的问题,如果你不能控制光照条件,板子或眼镜所在的表面等等,我会说这很难,所以这就成了机器学习的问题我猜测。

是的,我的答案是:

  1. 尝试训练一杯开始解决问题
  2. 取3-5个不同形状的眼镜,但两者之间差别不大。例如:enter image description here
  3. 从该角度使用网络摄像头拍摄照片,只需稍微旋转一下相机即可拍摄"眼镜之间的畸形。
  4. 添加不同的条件(光线,阳光,不同表面,不同背景等)。
  5. 当你有足够的图片(例如2000年?)时,请按照互联网上的任何教程训练他们,例如:http://note.sonots.com/SciSoftware/haartraining.html
  6. 嗯,如果可行的话,也可以用盘子做吧!

    祝你好运。