8#include <Eigen/Geometry>
10#include <Eigen/src/Core/Matrix.h>
11#include <fmt/chrono.h>
14#include <fmt/format.h>
15#include <fmt/ostream.h>
16#include <fmt/printf.h>
17#include <fmt/ranges.h>
20#include <opencv2/core.hpp>
49const Eigen::IOFormat
OctaveFmt(Eigen::StreamPrecision, 0,
", ",
";\n",
"",
"",
54struct fmt::formatter<Eigen::WithFormat<T>> : fmt::ostream_formatter {};
57struct fmt::formatter<
cv::Size_<T>> : fmt::ostream_formatter {};
59template <
typename Scalar>
60struct fmt::formatter<Eigen::Quaternion<Scalar>>
61 : fmt::formatter<fmt::string_view> {
62 auto format(
const Eigen::Quaternion<Scalar> &value, format_context &ctx)
const
63 -> format_context::iterator {
64 return fmt::format_to(ctx.out(),
"Ouat[{:.3f}X {:.3f}Y {:.3f}Z {:.3f}W]",
65 value.x(), value.y(), value.z(), value.w());
70struct fmt::formatter<Eigen::Matrix<float, 4, 1>>
71 : fmt::formatter<fmt::string_view> {
73 auto format(
const Eigen::Matrix<float, 4, 1> &value,
74 format_context &ctx)
const -> format_context::iterator {
75 return fmt::format_to(ctx.out(),
"Vec[{:.3f},{:.3f},{:.3f},{:.3f}]",
76 value(0, 0), value(1, 0), value(2, 0), value(3, 0));
98 T, std::enable_if_t<std::is_base_of_v<Eigen::DenseBase<T>, T>, char>>
99 : ostream_formatter {};