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

C# 如何使用OpenCV从图像中检测旋转对象?,c#,python,c++,opencv,object-detection,C#,Python,C++,Opencv,Object Detection,我一直在训练OpenCV分类器来识别书籍。要求是从图像中识别书籍。我已经使用了1000多个图像,OpenCV能够在不旋转的情况下检测书籍。然而,当我试图检测带有旋转的书籍时,它不能正常工作。所以我想知道它们是否能够使用OpenCV检测图像中带有旋转的对象 您使用什么功能来检测您的书籍?您是否正在培训CNN并使用OpenCV部署它?在这种情况下,将旋转图像增强添加到训练中可以很容易地检测到旋转的书籍 如果您使用传统的计算机视觉技术,您可以尝试使用一些旋转不变的特征提取程序,如SURF,但是,结果将

我一直在训练OpenCV分类器来识别书籍。要求是从图像中识别书籍。我已经使用了1000多个图像,OpenCV能够在不旋转的情况下检测书籍。然而,当我试图检测带有旋转的书籍时,它不能正常工作。所以我想知道它们是否能够使用OpenCV检测图像中带有旋转的对象

您使用什么功能来检测您的书籍?您是否正在培训CNN并使用OpenCV部署它?在这种情况下,将旋转图像增强添加到训练中可以很容易地检测到旋转的书籍


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

首先,你应该了解和的主要理论思想

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


总之,姿势估计扭曲(对齐)对于这些旋转问题非常重要。

使用OpenCV和关键点匹配算法(如SURF或ORB)可以完美解决您的问题。你真的不需要分类器。根据我的经验,这种使用未经修改的openCv的解决方案可以放大到识别大约10000幅图像

我要做的是: 脱机:在书本图像上循环生成一个关键点描述符数据库,将每个描述符与它来自的书本的id相匹配。 联机:计算查询图像的关键点,并尝试(使用BF、FLANN或LSH)将它们与预先计算的数据库的关键点进行匹配。 投票选出与大多数查询关键点匹配的数据库书籍封面。 尝试计算所选db书籍封面和查询图像之间的单应矩阵,以验证匹配

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

有关简单示例,请参见此链接:

我想识别一本书的封面,然后使用该识别区域提取书皮并保存它。现在我正在训练haar分类器,使用书籍封面图像作为正图像,非书籍封面图像作为负图像。在这种情况下,是否可以使用SURF或ORB与haar级联?您想识别“所有”书籍的封面,还是只识别训练数据中表示的一组书籍?最好是所有书籍。