10 static void SaveMatrixToJson(Json::Value &obj,
const std::string &key, T mat) {
11 int rows = mat.rows();
12 int cols = mat.cols();
16 for (
int r = 0; r < rows; r++) {
17 array.append(mat(r, 0));
20 for (
int r = 0; r < rows; r++) {
21 Json::Value inner_arr;
22 for (
int c = 0; c < cols; c++) {
23 inner_arr.append(mat(r, c));
25 array.append(inner_arr);
32 static bool LoadMatrixFromJson(
const Json::Value &obj,
const std::string &key,
34 int rows = mat.rows();
35 int cols = mat.cols();
37 Json::Value array = obj[key];
40 std::cerr <<
"Not found key:[" << key <<
"] in json file" << std::endl;
45 for (
int r = 0; r < rows; r++) {
46 mat(r, 0) = array[r].asFloat();
49 for (
int r = 0; r < rows; r++) {
50 Json::Value inner_arr = array[r];
51 for (
int c = 0; c < cols; c++) {
52 mat(r, c) = inner_arr[c].asFloat();
59 static void SaveBaseCameraParameter(Json::Value &obj,
62 obj[
"name"] = param.
name_;
64 obj[
"width"] = param.
width_;
65 SaveMatrixToJson(obj,
"intrinsic", param.
intrinsic_);
66 SaveMatrixToJson(obj,
"extrinsic_r", param.
extrinsic_r_);
67 SaveMatrixToJson(obj,
"extrinsic_t", param.
extrinsic_t_);
72 static bool LoadBaseCameraParameter(
const Json::Value &obj,
75 std::string cls_name = obj[
"class_name"].asString();
78 if (cls_name !=
"" && cls_name != param.
ClassName()) {
83 param.
name_ = obj[
"name"].asString();
84 param.
height_ = obj[
"height"].asInt();
85 param.
width_ = obj[
"width"].asInt();
89 ret = LoadMatrixFromJson(obj,
"intrinsic", param.
intrinsic_);
90 ret &= LoadMatrixFromJson(obj,
"extrinsic_r", param.
extrinsic_r_);
91 ret &= LoadMatrixFromJson(obj,
"extrinsic_t", param.
extrinsic_t_);
95 static std::string JsonToString(
const Json::Value &obj) {
96 Json::StyledWriter writer;
97 return writer.write(obj);
100 static bool JsonToFile(
const Json::Value &obj,
const std::string &filename) {
101 std::ofstream jsonfile(filename, std::ios::out | std::ios::trunc);
102 if (jsonfile.is_open()) {
103 Json::StyledWriter writer;
104 jsonfile << writer.write(obj);
108 std::cerr <<
"Save Failed!, filename: " << filename << std::endl;
112 static bool JsonFromFile(Json::Value &obj,
const std::string &filename) {
114 std::ifstream jsonfile(filename);
115 if (jsonfile.is_open()) {
116 if (reader.parse(jsonfile, obj,
false)) {
120 std::cerr <<
"Parse Failed!, filename: " << filename << std::endl;
124 static bool check_and_load_float(
float *val,
const Json::Value &obj,
125 const std::string &key) {
126 if (obj[key].empty()) {
127 std::cerr <<
"Not found key:[" << key <<
"] in json file" << std::endl;
130 *val = obj[key].asFloat();
Eigen::Matrix4f intrinsic_
Definition: camera.h:56
std::string name_
Definition: camera.h:55
virtual std::string ClassName() const =0
std::string convention_
Definition: camera.h:62
Eigen::Matrix3f extrinsic_r_
Definition: camera.h:57
Contains the base camera parameter.
Definition: camera.h:16
bool world2cam_
Definition: camera.h:61
int height_
Definition: camera.h:60
int width_
Definition: camera.h:59
Eigen::Vector3f extrinsic_t_
Definition: camera.h:58