|
@@ -3,38 +3,6 @@
|
|
|
namespace GNode
|
|
|
{
|
|
|
|
|
|
-const float IOU_THRESHOLD = 0.7; // 可调阈值
|
|
|
-
|
|
|
-float calculate_iou(const std::vector<float>& tlwh, const data::Box& box) {
|
|
|
- float track_x1 = tlwh[0];
|
|
|
- float track_y1 = tlwh[1];
|
|
|
- float track_x2 = tlwh[0] + tlwh[2];
|
|
|
- float track_y2 = tlwh[1] + tlwh[3];
|
|
|
-
|
|
|
- float box_x1 = box.left;
|
|
|
- float box_y1 = box.top;
|
|
|
- float box_x2 = box.right;
|
|
|
- float box_y2 = box.bottom;
|
|
|
-
|
|
|
- float inter_x1 = std::max(track_x1, box_x1);
|
|
|
- float inter_y1 = std::max(track_y1, box_y1);
|
|
|
- float inter_x2 = std::min(track_x2, box_x2);
|
|
|
- float inter_y2 = std::min(track_y2, box_y2);
|
|
|
-
|
|
|
- float inter_area = std::max(0.0f, inter_x2 - inter_x1) * std::max(0.0f, inter_y2 - inter_y1);
|
|
|
-
|
|
|
- float track_area = tlwh[2] * tlwh[3];
|
|
|
- float box_area = (box.right - box.left) * (box.bottom - box.top);
|
|
|
-
|
|
|
- float union_area = track_area + box_area - inter_area;
|
|
|
-
|
|
|
- if (union_area <= 0.0f) {
|
|
|
- return 0.0f;
|
|
|
- }
|
|
|
- return inter_area / union_area;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
void TrackNode::work()
|
|
|
{
|
|
|
printf("TrackNode %s\n", name_.c_str());
|