ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
PinholeCameraTrajectory.cpp
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - CloudViewer: www.cloudViewer.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.cloudViewer.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
9 
10 #include <Logging.h>
11 #include <json/json.h>
12 
14 
15 namespace cloudViewer {
16 namespace camera {
17 using namespace cloudViewer;
18 
20 
22 
24  value["class_name"] = "PinholeCameraTrajectory";
25  value["version_major"] = 1;
26  value["version_minor"] = 0;
27  Json::Value parameters_array;
28  for (const auto &parameter : parameters_) {
29  Json::Value parameter_value;
30  parameter.ConvertToJsonValue(parameter_value);
31  parameters_array.append(parameter_value);
32  }
33  value["parameters"] = parameters_array;
34 
35  return true;
36 }
37 
39  if (value.isObject() == false) {
41  "PinholeCameraTrajectory read JSON failed: unsupported json "
42  "format.");
43  return false;
44  }
45  if (value.get("class_name", "").asString() != "PinholeCameraTrajectory" ||
46  value.get("version_major", 1).asInt() != 1 ||
47  value.get("version_minor", 0).asInt() != 0) {
49  "PinholeCameraTrajectory read JSON failed: unsupported json "
50  "format.");
51  return false;
52  }
53 
54  const Json::Value parameter_array = value["parameters"];
55 
56  if (parameter_array.size() == 0) {
58  "PinholeCameraTrajectory read JSON failed: empty "
59  "trajectory.");
60  return false;
61  }
62  parameters_.resize(parameter_array.size());
63  for (size_t i = 0; i < parameter_array.size(); i++) {
64  const Json::Value &status_object = parameter_array[int(i)];
65  if (parameters_[i].intrinsic_.ConvertFromJsonValue(
66  status_object["intrinsic"]) == false) {
67  return false;
68  }
69  if (EigenMatrix4dFromJsonArray(parameters_[i].extrinsic_,
70  status_object["extrinsic"]) == false) {
71  return false;
72  }
73  }
74  return true;
75 }
76 } // namespace camera
77 } // namespace cloudViewer
bool ConvertFromJsonValue(const Json::Value &value) override
bool ConvertToJsonValue(Json::Value &value) const override
#define LogWarning(...)
Definition: Logging.h:72
Generic file read and write utility for python interface.
static vtkPVTrivialProducerStaticInternal Value