10#ifndef COMMON_INTERVAL_HPP
11#define COMMON_INTERVAL_HPP
14#include <opencv2/core.hpp>
72 operator cv::Range()
const;
87 bool IsValid(
int min_interval_len = 1)
const;
109 return interval1.
Length() < interval2.Length();
113 return interval1.
Length() > interval2.Length();
132 return compare(interval1, interval2);
196inline Interval::operator cv::Range()
const {
197 return cv::Range(start, end);
215 return interval1.
start == interval2.
start && interval1.
end == interval2.
end;
233 return interval1.
start != interval2.
start || interval1.
end != interval2.
end;
252 return interval1.
end < interval2.
end;
272 return interval1.
end > interval2.
end;
292 return interval1.
end <= interval2.
end;
312 return interval1.
end >= interval2.
end;
329 out <<
'[' << interval.
start <<
", " << interval.
end <<
")";
365 return value >=
start && value <
end;
395 return end -
start >= min_interval_len;
460 start += start_trans_value;
461 end += end_trans_value;
478 start += trans_value;
494 return {INT_MIN, INT_MAX};
bool Include(T value) const
判断值是否被该区间包含
friend bool operator<(const Interval &interval1, const Interval &interval2)
区间类重载小于号
bool IsValid(int min_interval_len=1) const
判断区间是否有效
double Middle() const
获取区间中间值
friend bool operator!=(const Interval &interval1, const Interval &interval2)
区间类重载不等于号
Interval Union(const Interval &interval) const
计算两个区间的并区间
friend std::ostream & operator<<(std::ostream &out, const Interval &interval)
区间类重载输出流运算符
Interval Intersect(const Interval &interval) const
计算两个区间的相交区间
friend bool operator>=(const Interval &interval1, const Interval &interval2)
区间类重载大于等于号
bool IsIntersect(const Interval &interval) const
判断两区间是否相交
friend bool operator>(const Interval &interval1, const Interval &interval2)
区间类重载大于号
Interval & Translate(int start_trans_value, int end_trans_value)
区间的坐标平移
static Interval All()
获取表示全范围的区间
friend bool operator==(const Interval &interval1, const Interval &interval2)
区间类重载等于号
friend bool operator<=(const Interval &interval1, const Interval &interval2)
区间类重载小于等于号
bool operator>=(const Interval &interval1, const Interval &interval2)
区间类重载大于等于号
bool operator!=(const Interval &interval1, const Interval &interval2)
区间类重载不等于号
bool operator<(const Interval &interval1, const Interval &interval2)
区间类重载小于号
bool operator==(const Interval &interval1, const Interval &interval2)
区间类重载等于号
bool operator<=(const Interval &interval1, const Interval &interval2)
区间类重载小于等于号
std::ostream & operator<<(std::ostream &out, const Interval &interval)
区间类重载输出流运算符
bool operator>(const Interval &interval1, const Interval &interval2)
区间类重载大于号
CompareByLength(bool is_ascending=true)
区间的比较仿函数的带参构造函数
bool operator()(const Interval &interval1, const Interval &interval2) const
区间的比较仿函数重载括号运算符