OpenCv形状检测

时间:2014-10-10 05:33:18

标签: c++ opencv

我正在使用Opencv来检测将在跑带上保持的材料的形状和尺寸(如不同尺寸的圆盘,垫圈,螺母和螺栓)。什么功能最好区分它们。 我计划使用cvFindContours(找到形状)和cvArcLength& cvContourArea获得他们的区域。

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

这是形状匹配的简单方法:

  1. 转换为灰度
  2. Smoothen图片。
  3. 应用一些morphological operations(如有必要)。
  4. Edge detect
  5. 查找轮廓(与您提到的相同)。轮廓功能是分层的。因此,分割所需(大多数情况下是外部)轮廓应该很容易。圆盘和垫圈可以通过轮廓层次中的孔来区分。
  6. 使用ApproxPolyDP将轮廓变为粗糙的规则形状。您可以根据轮廓中的顶点数来区分形状。
  7. 如果ApproxPolyDP不足,请使用moments区分形状。
  8. 适用于大多数情况。始终提供样本图像,以帮助我们评估问题的复杂性:D。

答案 1 :(得分:0)

检查opencv中的haar级联对象检测技术 这里有一些链接......

http://coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html

http://www.technolabsz.com/2011/08/how-to-do-opencv-haar-training.html

对于haar cascade的工作,你需要haar kit用于训练目的..

http://kineme.net/files/haar.zip