如何使用OpenCV从图像中检测旋转对象?

时间:2018-02-07 20:57:41

标签: c# python c++ opencv object-detection

我一直在训练用于识别书籍的OpenCV分类器。要求是从图像中识别书籍。我使用了1000多张图片,OpenCV能够检测到没有旋转的书籍。然而,当我试图检测旋转的书时,它无法正常工作。所以我想知道他们是否仍然使用OpenCV检测图像中的旋转对象?

3 个答案:

答案 0 :(得分:1)

您使用哪些功能来检测图书?您是在培训CNN并使用OpenCV进行部署吗?在这种情况下,将旋转图像增强功能添加到训练中可以轻松检测旋转的书籍。

如果您使用传统的计算机视觉技术,您可以尝试使用一些旋转不变特征提取器,如SURF,但是,结果将不如使用现在最先进的CNN这样的CNN。问题。

答案 1 :(得分:0)

首先,你应该得到pose estimationimage warping的主要理论思想。

您应该定义书籍的一些重要点(一些对每种类型的书有效的特殊和强大的功能),然后您可以使用这些点来估计书的姿势。获得姿势角后,您应该扭曲图像以对齐书籍。在书籍对齐之后,您应该执行特征提取,以便通过这种方式提高书籍检测的成功率。

总结一下,姿势估计扭曲(对齐)对于这些旋转问题很重要。

答案 2 :(得分:0)

使用OpenCV和关键点匹配算法(如SURF或ORB)可以很好地解决您的问题。你真的不需要分类器。根据我的经验,使用未经修改的openCv的此类解决方案可以扩展以识别大约10,000个图像。

我会做的是: 离线:遍历图书图像,生成一个关键点描述符数据库,将每个描述符与其来源的书籍ID相匹配。 在线:计算查询图像的关键点,并尝试将它们中的每一个匹配(使用BF,FLANN或LSH)到预先计算的数据库的关键点。 投票选择与大多数查询关键点匹配的数据库书籍封面。 尝试计算所选数据库书籍封面和查询图像之间的单应矩阵以验证匹配。

ORB,BRISK,SURF,SIFT特征描述符都可用于此任务,并且旋转不变。 ORB和BRISK速度更快,性能也更低。

请参阅此链接以获取简单示例: https://docs.opencv.org/3.3.0/dc/dc3/tutorial_py_matcher.html