13 explicit frm(
real value) : value_(value) { }
16 std::ostream&
operator<<(std::ostream& stream,
const frm& f) {
17 stream << std::setprecision(11) << std::setw(17) << std::setfill(
' ') << f.value_;
26 rotation(0, 0), rotation(0, 1), rotation(0, 2), translation[0],
27 rotation(1, 0), rotation(1, 1), rotation(1, 2), translation[1],
28 rotation(2, 0), rotation(2, 1), rotation(2, 2), translation[2],
35 mat33 R_inv = rotation.t();
36 vec3 t_inv = -R_inv * translation;
38 R_inv(0, 0), R_inv(0, 1), R_inv(0, 2), t_inv[0],
39 R_inv(1, 0), R_inv(1, 1), R_inv(1, 2), t_inv[1],
40 R_inv(2, 0), R_inv(2, 1), R_inv(2, 2), t_inv[2],
47 for(
int i = 0; i < 3; ++i)
for(
int j = 0; j < 3; ++j)
48 rotation(i, j) = ex(i, j);
49 for(
int i = 0; i < 3; ++i)
50 translation[i] = ex(i, 3);
56 return rotation.t() * translation;
62 for(
auto& j_cam : j_cams) {
64 cam.
name = j_cam[
"name"];
68 cam.
rotation = extrinsic.get_minor<3, 3>(0, 0);
70 auto t = extrinsic.get_minor<3, 1>(0, 3);
82 std::ofstream stream(filename);
87 for(
const camera& cam : cameras) {
88 if(! first) stream <<
",";
93 <<
"\t\"name\" : " << std::quoted(cam.name) <<
",\n" 94 <<
"\t\"K\" : [[" << frm(cam.intrinsic(0, 0)) <<
", " << frm(cam.intrinsic(0, 1)) <<
", " << frm(cam.intrinsic(0, 2)) <<
"],\n" 95 <<
"\t [" << frm(cam.intrinsic(1, 0)) <<
", " << frm(cam.intrinsic(1, 1)) <<
", " << frm(cam.intrinsic(1, 2)) <<
"],\n" 96 <<
"\t [" << frm(cam.intrinsic(2, 0)) <<
", " << frm(cam.intrinsic(2, 1)) <<
", " << frm(cam.intrinsic(2, 2)) <<
"]],\n" 97 <<
"\t\"Rt\" : [[" << frm(cam.rotation(0, 0)) <<
", " << frm(cam.rotation(0, 1)) <<
", " << frm(cam.rotation(0, 2)) <<
", " << frm(cam.translation[0]) <<
"],\n" 98 <<
"\t [" << frm(cam.rotation(1, 0)) <<
", " << frm(cam.rotation(1, 1)) <<
", " << frm(cam.rotation(1, 2)) <<
", " << frm(cam.translation[1]) <<
"],\n" 99 <<
"\t [" << frm(cam.rotation(2, 0)) <<
", " << frm(cam.rotation(2, 1)) <<
", " << frm(cam.rotation(2, 2)) <<
", " << frm(cam.translation[2]) <<
"],\n" 100 <<
"\t [" << frm(0.0) <<
", " << frm(0.0) <<
", " << frm(0.0) <<
", " << frm(1.0) <<
"]]\n" 113 std::map<std::string, camera> map;
114 for(
const camera& cam : arr) map[cam.name] = cam;
130 for(
const auto& kv : map) arr.push_back(kv.second);
void export_cameras_file(const camera_array &cameras, const std::string &filename)
camera_array decode_cameras(const json &j_cams)
std::map< std::string, camera > cameras_map(const camera_array &arr)
mat44 extrinsic_inv() const
std::ostream & operator<<(std::ostream &, const view_index &)
camera_array cameras_arg()
cv::Mat_< real > decode_mat(const json &j)
cv::Matx< real, 3, 3 > mat33
void set_extrinsic(const mat44 &)
intrinsics to_undistorted_intrinsics(const camera &cam, int width, int height)
std::vector< camera > camera_array
cv::Matx< real, 4, 4 > mat44