70# pragma warning(disable : 4251)
86 static constexpr const char *
path{
"" };
89 static constexpr const char *
name{
"CameraCalibration" };
92 static constexpr const char *
description{ R
"description(Camera Calibration data model)description" };
104 static constexpr std::array<uint8_t, 3> binaryId{
'c',
'a',
'c' };
118 static constexpr const char *
path{
"Extrinsics" };
121 static constexpr const char *
name{
"Extrinsics" };
124 static constexpr const char *
description{ R
"description(Camera Extrinsics)description" };
134 : m_value{ std::move(
value) }
149 return m_value == other.m_value;
155 return m_value != other.m_value;
161 return stream <<
value.toString();
165 void setFromString(
const std::string &value);
169 friend struct DataModel::Detail::Befriend<
Extrinsics>;
182 static constexpr const char *
path{
"Intrinsics" };
185 static constexpr const char *
name{
"Intrinsics" };
188 static constexpr const char *
description{ R
"description(Camera Intrinsics)description" };
198 : m_value{ std::move(
value) }
213 return m_value == other.m_value;
219 return m_value != other.m_value;
225 return stream <<
value.toString();
229 void setFromString(
const std::string &value);
233 friend struct DataModel::Detail::Befriend<
Intrinsics>;
236 using Descendants = std::tuple<CameraCalibration::Extrinsics, CameraCalibration::Intrinsics>;
273 typename std::enable_if<
sizeof...(Args) >= 1,
int>::type = 0,
274 typename std::enable_if<
275 Zivid::Detail::TypeTraits::AllArgsAreInTuple<
Descendants,
typename std::decay<Args>::type...>::value,
278 template<typename... Args>
282 using namespace Zivid::Detail::TypeTraits;
285 AllArgsDecayedAreUnique<Args...>::value,
286 "Found duplicate types among the arguments passed to CameraCalibration(...). "
287 "Types should be listed at most once.");
289 set(std::forward<Args>(args)...);
304 template<
typename... Args,
typename std::enable_if<
sizeof...(Args) >= 2,
int>::type = 0>
306 template<typename... Args>
310 using namespace Zivid::Detail::TypeTraits;
312 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
314 AllArgsAreDescendantNodes::value,
"All arguments passed to set(...) must be descendant nodes.");
317 AllArgsDecayedAreUnique<Args...>::value,
318 "Found duplicate types among the arguments passed to set(...). "
319 "Types should be listed at most once.");
321 Zivid::DataModel::Detail::invokeSetWithEachArgument(*
this, std::forward<Args>(args)...);
337 template<
typename... Args,
typename std::enable_if<
sizeof...(Args) >= 1,
int>::type = 0>
339 template<typename... Args>
343 using namespace Zivid::Detail::TypeTraits;
345 using AllArgsAreDescendantNodes = AllArgsAreInTuple<Descendants, typename std::decay<Args>::type...>;
347 AllArgsAreDescendantNodes::value,
"All arguments passed to copyWith(...) must be descendant nodes.");
350 AllArgsDecayedAreUnique<Args...>::value,
351 "Found duplicate types among the arguments passed to copyWith(...). "
352 "Types should be listed at most once.");
355 copy.set(std::forward<Args>(args)...);
374 m_extrinsics = value;
393 m_intrinsics = value;
399 typename std::enable_if<std::is_same<T, CameraCalibration::Extrinsics>::value,
int>::type = 0>
407 typename std::enable_if<std::is_same<T, CameraCalibration::Intrinsics>::value,
int>::type = 0>
413 template<size_t i, typename std::enable_if<i == 0, int>::type = 0>
419 template<size_t i, typename std::enable_if<i == 1, int>::type = 0>
457 void save(
const std::string &fileName)
const;
460 void load(
const std::string &fileName);
463 void setFromString(
const std::string &value);
465 void setFromString(
const std::string &fullPath,
const std::string &value);
467 std::string getString(
const std::string &fullPath)
const;
477 struct CameraCalibration::Version<1>
490 ZIVID_CORE_EXPORT void save(
const Zivid::CameraCalibration &dataModel, std::ostream &ostream);
491 ZIVID_CORE_EXPORT void load(Zivid::CameraCalibration &dataModel, std::istream &istream);
501# if !(defined(_MSC_VER) && (_MSC_VER <= 1900))
506 struct tuple_size<Zivid::CameraCalibration> : integral_constant<size_t, 2>
510 struct tuple_element<i, Zivid::CameraCalibration>
512 static_assert(i < tuple_size<Zivid::CameraCalibration>::value,
"Index must be less than 2");
515 =
decltype(declval<Zivid::CameraCalibration>().get<i>());
524#if defined(__has_include) && !defined(NO_DOC)
525# if __has_include("Zivid/CameraCalibrationInternal.h") && __has_include("Zivid/DataModelNodeMetaData.h")
526# include "Zivid/CameraCalibrationInternal.h"
#define ZIVID_CORE_EXPORT
Definition CoreExport.h:56
Camera Extrinsics.
Definition CameraCalibration.h:112
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition CameraCalibration.h:115
Extrinsics(Zivid::CameraExtrinsics value)
Constructor.
Definition CameraCalibration.h:133
const Zivid::CameraExtrinsics & value() const
Get the value.
static constexpr const char * path
The full path for this value.
Definition CameraCalibration.h:118
static constexpr const char * description
The description for this value.
Definition CameraCalibration.h:124
Extrinsics()=default
Default constructor.
Zivid::CameraExtrinsics ValueType
The type of the underlying value.
Definition CameraCalibration.h:127
Zivid::CameraExtrinsics & value()
Get a mutable reference to the value.
std::string toString() const
Get the value as string.
bool operator!=(const Extrinsics &other) const
Comparison operator.
Definition CameraCalibration.h:153
static constexpr const char * name
The name of this value.
Definition CameraCalibration.h:121
friend std::ostream & operator<<(std::ostream &stream, const Extrinsics &value)
Operator to serialize the value to a stream.
Definition CameraCalibration.h:159
bool operator==(const Extrinsics &other) const
Comparison operator.
Definition CameraCalibration.h:147
Camera Intrinsics.
Definition CameraCalibration.h:176
Zivid::CameraIntrinsics & value()
Get a mutable reference to the value.
const Zivid::CameraIntrinsics & value() const
Get the value.
static constexpr const char * description
The description for this value.
Definition CameraCalibration.h:188
std::string toString() const
Get the value as string.
bool operator!=(const Intrinsics &other) const
Comparison operator.
Definition CameraCalibration.h:217
static constexpr const char * name
The name of this value.
Definition CameraCalibration.h:185
Zivid::CameraIntrinsics ValueType
The type of the underlying value.
Definition CameraCalibration.h:191
static constexpr const char * path
The full path for this value.
Definition CameraCalibration.h:182
bool operator==(const Intrinsics &other) const
Comparison operator.
Definition CameraCalibration.h:211
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition CameraCalibration.h:179
Intrinsics()=default
Default constructor.
Intrinsics(Zivid::CameraIntrinsics value)
Constructor.
Definition CameraCalibration.h:197
friend std::ostream & operator<<(std::ostream &stream, const Intrinsics &value)
Operator to serialize the value to a stream.
Definition CameraCalibration.h:223
Camera Calibration data model.
Definition CameraCalibration.h:80
const CameraCalibration::Intrinsics & get() const
Definition CameraCalibration.h:408
void forEach(const F &f)
Run the given function on each direct member with the value of the member as parameter.
Definition CameraCalibration.h:435
const Extrinsics & extrinsics() const
Get Extrinsics.
Definition CameraCalibration.h:360
std::string toString() const
Get the value as string.
void save(const std::string &fileName) const
Save to the given file.
const Intrinsics & intrinsics() const
Get Intrinsics.
Definition CameraCalibration.h:379
void forEach(const F &f) const
Run the given function on each direct member with the value of the member as parameter.
Definition CameraCalibration.h:427
Extrinsics & extrinsics()
Get Extrinsics.
Definition CameraCalibration.h:366
static constexpr size_t version
Definition CameraCalibration.h:94
CameraCalibration()
Default constructor.
friend std::ostream & operator<<(std::ostream &stream, const CameraCalibration &value)
Operator to send the value as string to a stream.
Definition CameraCalibration.h:451
void set(Args &&...args)
Set multiple arguments.
Definition CameraCalibration.h:308
CameraCalibration(Args &&...args)
Constructor taking variadic number of arguments.
Definition CameraCalibration.h:280
std::string serialize() const
Serialize to a string.
static constexpr DataModel::NodeType nodeType
The type of this node.
Definition CameraCalibration.h:83
Intrinsics & intrinsics()
Get Intrinsics.
Definition CameraCalibration.h:385
CameraCalibration & set(const Extrinsics &value)
Set Extrinsics.
Definition CameraCalibration.h:372
void load(const std::string &fileName)
Load from the given file.
static constexpr const char * name
The name of this value.
Definition CameraCalibration.h:89
CameraCalibration copyWith(Args &&...args) const
Returns a copy of this object with the given argument(s) set to the new value(s)
Definition CameraCalibration.h:341
std::tuple< CameraCalibration::Extrinsics, CameraCalibration::Intrinsics > Descendants
Definition CameraCalibration.h:236
bool operator==(const CameraCalibration &other) const
Equality operator.
bool operator!=(const CameraCalibration &other) const
Inequality operator.
const CameraCalibration::Extrinsics & get() const
Definition CameraCalibration.h:400
CameraCalibration(const std::string &fileName)
Construct CameraCalibration by loading from file.
static constexpr const char * description
The description for this value.
Definition CameraCalibration.h:92
CameraCalibration & set(const Intrinsics &value)
Set Intrinsics.
Definition CameraCalibration.h:391
static CameraCalibration fromSerialized(const std::string &value)
Construct a new CameraCalibration instance from a previously serialized string.
static constexpr const char * path
The full path for this value.
Definition CameraCalibration.h:86
Extrinsic parameters describing the pose of a camera in 3D space, expressed as a rotation quaternion ...
Definition CameraExtrinsics.h:79
Information about the intrinsic parameters of the camera (OpenCV model)
Definition CameraIntrinsics.h:78
NodeType
Definition NodeType.h:49
@ leafValue
Definition NodeType.h:52
@ group
Definition NodeType.h:50
Definition EnvironmentInfo.h:74
Get version information for the library.
Definition Version.h:58
The main Zivid namespace. All Zivid code is found here.
Definition Application.h:85