大家好:)我只是openCV的初学者。
我一直在尝试使用 ORB 开发跟踪程序。 我只想在检测到的物体周围绘制矩形。
这是其中的一部分 result跟踪计划。 “黑车”是我想跟踪的(感兴趣的对象)。如您所见,“黑车”周围有许多不必要的功能和检测到的功能。
为了在检测到的物体周围画画,我认为有两种方法。
1)查找特征密度:如您所见,“黑车”周围的功能比其他功能更密集。所以...如果我可以计算它们的密度,(可能是“黑车”周围的区域密度最大......?)那么我可以更容易地绘制矩形。
2)删除不必要的功能:如果只剩下必要的功能,我可以计算它们的中心。
从现在开始,我一直在使用'所有功能的中心'。但它没有我想象的那么有效。因为当我用这种方式时,矩形被绘制得远离'黑车'。
如果有与上述两种方式相关的功能或算法,请告诉我!如果你们知道更好的方式,那么它对我来说也很有帮助。
提前谢谢你,希望你们有美好的一天:)
答案 0 :(得分:1)
如果您想坚持关键点,可以执行以下操作:
相反或者另外,您可以使用许多其他方法(背景减法,概率跟踪,大小假设等)。总而言之,如果你期望取得好成绩,这不是一项微不足道的任务。
答案 1 :(得分:0)
首先回答你的问题 - 使用功能来检测一个对象,你需要知道你正在尝试将它们匹配,或者确保该对象总是会呈现比背景更多的功能。在你的情况下,情况都不是这样。
当您开始使用真实数据时,使用自己的功能来确定汽车的位置将被证明是非常不可靠的,因为背景可能被证明是嘈杂的并且包含比汽车本身更多的角落。
首先:尽快收集真实数据。使用您提供的假图像开发算法是没有意义的,特别是因为您没有使用OpenCV的经验并且无法预见未来的问题。
其次:开发视频与开发静态图像有点不同。查看this tutorial,因为它可能对您的情况非常有用。
对于您的问题,最基本的管道看起来像这样:
perform some preprocessing (blurring for example)
calculate difference between 2 consecutive frames, to obtain the moving objects;
perform some filtering and binarization;
find contours of the objects;
decide if any of them is a car based on shape and size;
find out it's color;
draw a rectangle around it if it's black.
当然,您可以在此算法的每个步骤中使用更多高级技术,但我建议从简单的方法开始。