77 lines
1.9 KiB
C++
77 lines
1.9 KiB
C++
#include <iomanip>
|
|
#include <sstream>
|
|
|
|
#include "camera.hpp"
|
|
|
|
// =================================================================================================
|
|
// =================================================================================================
|
|
|
|
template <size_t M, size_t N>
|
|
static const std::string print_matrix(const std::array<std::array<double, N>, M> &matrix)
|
|
{
|
|
std::ostringstream out;
|
|
out << "[";
|
|
for (size_t j = 0; j < M; ++j)
|
|
{
|
|
out << "[";
|
|
for (size_t i = 0; i < N; ++i)
|
|
{
|
|
out << matrix[j][i];
|
|
if (i < N - 1)
|
|
{
|
|
out << ", ";
|
|
}
|
|
}
|
|
out << "]";
|
|
if (j < M - 1)
|
|
{
|
|
out << ", ";
|
|
}
|
|
}
|
|
out << "]";
|
|
return out.str();
|
|
}
|
|
|
|
// =================================================================================================
|
|
// =================================================================================================
|
|
|
|
std::string Camera::to_string() const
|
|
{
|
|
std::ostringstream out;
|
|
out << std::fixed << std::setprecision(6);
|
|
|
|
out << "{";
|
|
out << "'name': '" << name << "', ";
|
|
|
|
out << "'K': " << print_matrix(K) << ", ";
|
|
|
|
out << "'DC': [";
|
|
for (size_t i = 0; i < DC.size(); ++i)
|
|
{
|
|
out << DC[i];
|
|
if (i < DC.size() - 1)
|
|
out << ", ";
|
|
}
|
|
out << "], ";
|
|
|
|
out << "'R': " << print_matrix(R) << ", ";
|
|
out << "'T': " << print_matrix(T) << ", ";
|
|
out << "'P': " << print_matrix(P) << ", ";
|
|
|
|
out << "'width': " << width << ", ";
|
|
out << "'height': " << height << ", ";
|
|
out << "'type': " << type;
|
|
|
|
out << "}";
|
|
return out.str();
|
|
}
|
|
|
|
// =================================================================================================
|
|
|
|
std::ostream &operator<<(std::ostream &out, const Camera &cam)
|
|
{
|
|
out << cam.to_string();
|
|
return out;
|
|
}
|
|
|