将Tensorflow对象检测API与OpenCV的质心跟踪算法集成

时间:2018-12-20 10:13:24

标签: python algorithm opencv tensorflow

我正在使用对象检测教程api来检测对象。到目前为止,它一直运行良好。现在,我正在尝试将centroid tracking algorithm与对象检测api集成在一起。为了简要介绍质心跟踪算法的作用,它获取边界框的坐标,即Ymin, Xmin, Ymax, Xmax,并返回与给定边界框的质心相对应的x, y坐标。与此同时,它还将id分配给一个对象。

我的计划是使用tensorflow获取边界框的坐标,并将其输入质心跟踪算法,然后最终获取检测到的对象的对象id和质心。

我面临的问题是,tensorflow会话返回边界框的坐标,该边界框的值以[(0.359079509973526, 0.2901528775691986, 0.9121878147125244, 0.8523546457290649)]之类的十进制表示,但是质心跟踪器算法不接受这些值,因此最终输出为0 。如果我将边界框值从[(0.359079509973526, 0.2901528775691986, 0.9121878147125244, 0.8523546457290649)]更新为[(359.079509973526, 290.1528775691986, 912.1878147125244, 852.3546457290649)],那么它会给我输出,但不是很准确。

有人集成了这两种算法。如何在Tensorflow中将对象ID分配给检测到的对象。谢谢

1 个答案:

答案 0 :(得分:1)

请注意,张量流给出了标准化的坐标值。您必须将它们乘以框架的高度和宽度:xmin * frame.shape [1],ymin * frame.shape [0],xmax * frame.shape [1],ymax * frame.shape [0]。这样可以解决您的问题。另外,请记住检查跟踪器接受的坐标的顺序。