Files
ANSCORE/modules/ANSMOT/ByteTrack/include/Rect.h

51 lines
1.1 KiB
C++

#pragma once
#include "Eigen/Dense"
namespace ByteTrack
{
template<typename T>
using Tlwh = Eigen::Matrix<T, 1, 4, Eigen::RowMajor>;
template<typename T>
using Tlbr = Eigen::Matrix<T, 1, 4, Eigen::RowMajor>;
template<typename T>
using Xyah = Eigen::Matrix<T, 1, 4, Eigen::RowMajor>;
template<typename T>
class Rect
{
public:
Tlwh<T> tlwh;
Rect() = default;
Rect(const T &x, const T &y, const T &width, const T &height);
~Rect();
const T &x() const;
const T &y() const;
const T &width() const;
const T &height() const;
T &x();
T &y();
T &width();
T &height();
const T &tl_x() const;
const T &tl_y() const;
T br_x() const;
T br_y() const;
Tlbr<T> getTlbr() const;
Xyah<T> getXyah() const;
float calcIoU(const Rect<T>& other) const;
};
template<typename T>
Rect<T> generate_rect_by_tlbr(const Tlbr<T>& tlbr);
template<typename T>
Rect<T> generate_rect_by_xyah(const Xyah<T>& xyah);
}