51 lines
1.1 KiB
C++
51 lines
1.1 KiB
C++
#pragma once
|
|
#include "Eigen/Dense"
|
|
namespace ByteTrackNCNN
|
|
{
|
|
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);
|
|
} |