Open3D (C++ API)  0.19.0
Loading...
Searching...
No Matches
EigenConverter.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2024 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include <Eigen/Core>
11#include <vector>
12
13#include "open3d/core/Device.h"
14#include "open3d/core/Dtype.h"
15#include "open3d/core/Tensor.h"
16
17namespace open3d {
18namespace core {
19namespace eigen_converter {
20
28template <class Derived>
29core::Tensor EigenMatrixToTensor(const Eigen::MatrixBase<Derived> &matrix) {
30 typedef typename Derived::Scalar Scalar;
32 Eigen::Matrix<Scalar, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
33 matrix_row_major = matrix;
34 return core::Tensor(matrix_row_major.data(), {matrix.rows(), matrix.cols()},
35 dtype);
36}
37
43Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
45
51Eigen::Matrix<float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
53
59Eigen::Matrix<int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor>
61
68std::vector<Eigen::Vector2d> TensorToEigenVector2dVector(
69 const core::Tensor &tensor);
70
77std::vector<Eigen::Vector3d> TensorToEigenVector3dVector(
78 const core::Tensor &tensor);
79
86std::vector<Eigen::Vector2i> TensorToEigenVector2iVector(
87 const core::Tensor &tensor);
88
95std::vector<Eigen::Vector3i> TensorToEigenVector3iVector(
96 const core::Tensor &tensor);
97
107 const std::vector<Eigen::Vector3d> &values,
108 core::Dtype dtype,
109 const core::Device &device);
110
121 const std::vector<Eigen::Vector2d> &values,
122 core::Dtype dtype,
123 const core::Device &device);
124
135 const std::vector<Eigen::Vector2i> &values,
136 core::Dtype dtype,
137 const core::Device &device);
138
148 const std::vector<Eigen::Vector3i> &values,
149 core::Dtype dtype,
150 const core::Device &device);
151
152} // namespace eigen_converter
153} // namespace core
154} // namespace open3d
Definition Device.h:18
Definition Dtype.h:20
static const Dtype FromType()
Definition Dtype.h:54
Definition Scalar.h:23
Definition Tensor.h:32
std::vector< Eigen::Vector2d > TensorToEigenVector2dVector(const core::Tensor &tensor)
Converts a tensor of shape (N, 2) to std::vector<Eigen::Vector2d>. An exception will be thrown if the...
Definition EigenConverter.cpp:145
std::vector< Eigen::Vector2i > TensorToEigenVector2iVector(const core::Tensor &tensor)
Converts a tensor of shape (N, 2) to std::vector<Eigen::Vector2i>. An exception will be thrown if the...
Definition EigenConverter.cpp:160
Eigen::Matrix< int, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > TensorToEigenMatrixXi(const core::Tensor &tensor)
Converts a 2D tensor to Eigen::MatrixXi of same shape. Regardless of the tensor dtype,...
Definition EigenConverter.cpp:77
core::Tensor EigenVector3iVectorToTensor(const std::vector< Eigen::Vector3i > &values, core::Dtype dtype, const core::Device &device)
Converts a vector of Eigen::Vector3i to a (N, 3) tensor. This function also takes care of dtype conve...
Definition EigenConverter.cpp:179
core::Tensor EigenVector2iVectorToTensor(const std::vector< Eigen::Vector2i > &values, core::Dtype dtype, const core::Device &device)
Converts a vector of Eigen::Vector2i to a (N, 2) tensor. This function also takes care of dtype conve...
Definition EigenConverter.cpp:185
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > TensorToEigenMatrixXd(const core::Tensor &tensor)
Converts a 2D tensor to Eigen::MatrixXd of same shape. Regardless of the tensor dtype,...
Definition EigenConverter.cpp:67
std::vector< Eigen::Vector3i > TensorToEigenVector3iVector(const core::Tensor &tensor)
Converts a tensor of shape (N, 3) to std::vector<Eigen::Vector3i>. An exception will be thrown if the...
Definition EigenConverter.cpp:155
core::Tensor EigenVector3dVectorToTensor(const std::vector< Eigen::Vector3d > &values, core::Dtype dtype, const core::Device &device)
Converts a vector of Eigen::Vector3d to a (N, 3) tensor. This function also takes care of dtype conve...
Definition EigenConverter.cpp:165
std::vector< Eigen::Vector3d > TensorToEigenVector3dVector(const core::Tensor &tensor)
Converts a tensor of shape (N, 3) to std::vector<Eigen::Vector3d>. An exception will be thrown if the...
Definition EigenConverter.cpp:150
core::Tensor EigenMatrixToTensor(const Eigen::MatrixBase< Derived > &matrix)
Converts a eigen matrix of shape (M, N) with alignment A and type T to a tensor.
Definition EigenConverter.h:29
core::Tensor EigenVector2dVectorToTensor(const std::vector< Eigen::Vector2d > &values, core::Dtype dtype, const core::Device &device)
Converts a vector of Eigen::Vector2d to a (N, 2) tensor. This function also takes care of dtype conve...
Definition EigenConverter.cpp:172
Eigen::Matrix< float, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor > TensorToEigenMatrixXf(const core::Tensor &tensor)
Converts a 2D tensor to Eigen::MatrixXf of same shape. Regardless of the tensor dtype,...
Definition EigenConverter.cpp:72
Definition PinholeCameraIntrinsic.cpp:16