3#include "_cexports/c_core_3d.h"
8#include "sparse_point_cloud.hpp"
9#include "dense_point_cloud.hpp"
10#include "calibrator_3d.hpp"
11#include "sensor_settings.hpp"
49 return Internal::DoResCallShareOut<PointCloud>([&](
void *&handle) {
50 return CVB_CALL_CAPI(CVC3DLoadFileTyped(fileName.c_str(),
static_cast<CExports::cvbval_t
>(flags), handle));
87 return Internal::DoResCallShareOut<PointCloud>([&](
void *&handle) {
88 return CVB_CALL_CAPI(CVC3DCreateCalibratedPointCloudFromRangeMap(
89 rangeMap.
Map()->Handle(), calibrator.
Handle(),
static_cast<CExports::cvbval_t
>(flags), handle));
111 auto pointCloud =
Create(rangeMap, calibrator, flags);
113 if (!typedPointCloud)
114 typedPointCloud = TypeConvert<T>::Convert(*pointCloud);
115 return typedPointCloud;
158 return Internal::DoResCallShareOut<PointCloud>([&](
void *&handle) {
159 return CVB_CALL_CAPI(CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings(
160 rangeMap.
Map()->Handle(), calibrator.
Handle(),
161 *
reinterpret_cast<const CExports::CVC3DSensorSettings *
>(&settings), encoderStep,
162 static_cast<CExports::cvbval_t
>(flags), handle));
187 auto pointCloud =
CreateWithSettings(rangeMap, calibrator, flags, settings, encoderStep);
189 if (!typedPointCloud)
190 typedPointCloud = TypeConvert<T>::Convert(*pointCloud);
191 return typedPointCloud;
211 return CVB_CALL_CAPI(CVC3DCreateSparsePointCloud(
static_cast<CExports::cvbint64_t
>(numPoints),
212 static_cast<CExports::cvbval_t
>(flags), handle));
235 return CVB_CALL_CAPI(CVC3DCreateSparsePointCloudFromPointer(
236 const_cast<void **
>(planeBasePtrs.data()),
237 static_cast<CExports::cvbdim_t
>(numPlanes),
239 tmpPlaneIncs, [](
void *,
void *) {},
nullptr, handle));
260 return CVB_CALL_CAPI(
261 CVC3DCreateDensePointCloud(size.
Width(), size.
Height(),
static_cast<CExports::cvbval_t
>(flags), handle));
282 return CVB_CALL_CAPI(CVC3DCreateDensePointCloudFromRangeMap(
283 rangeMap.
Map()->Handle(), *
reinterpret_cast<CExports::CVC3DFactors *
>(&factors),
284 static_cast<CExports::cvbval_t
>(flags), handle));
300 const auto &sparse =
dynamic_cast<const SparsePointCloud &
>(pointCloud);
301 return sparse.ToDensePointCloud();
310 const auto &dense =
dynamic_cast<const DensePointCloud &
>(pointCloud);
311 return dense.ToSparsePointCloud();
Base calibration class to apply 3D calibration to point clouds.
Definition decl_calibrator_3d.hpp:67
void * Handle() const noexcept
Returns C-API style handle to Node Object.
Definition decl_calibrator_3d.hpp:185
Data type description for an image plane.
Definition data_type.hpp:23
int NativeDescriptor() const noexcept
Native data type descriptor.
Definition data_type.hpp:312
A dense Cartesian 3D point cloud object.
Definition decl_dense_point_cloud.hpp:30
Image plane information container.
Definition decl_image_plane.hpp:29
std::unique_ptr< Image > Map() const
Create a map from a single image plane that shares its memory with the original plane.
Definition detail_image_plane.hpp:100
Factory object for creating point cloud objects.
Definition point_cloud_factory.hpp:21
static SparsePointCloudPtr CreateSparse(const std::vector< void * > &planeBasePtrs, int numPlanes, Cvb::DataType dataType, std::size_t numPoints, const std::vector< std::intptr_t > &planeIncs)
Creates a point cloud from the given memory without copying the data.
Definition point_cloud_factory.hpp:228
static PointCloudPtr Load(const String &fileName, PointCloudFlags flags)
Loads a 3D point, polygon or mesh file.
Definition point_cloud_factory.hpp:47
static SparsePointCloudPtr CreateSparse(std::size_t numPoints, PointCloudFlags flags)
Creates a new sparse Cartesian 3D point cloud.
Definition point_cloud_factory.hpp:208
static std::shared_ptr< T > Load(const String &fileName, PointCloudFlags flags)
Loads a 3D point, polygon or mesh file (typed).
Definition point_cloud_factory.hpp:31
static std::shared_ptr< T > Create(const ImagePlane &rangeMap, const Calibrator3D &calibrator, PointCloudFlags flags)
Creates a new Cartesian 3D point cloud from the given 2.5D range map image (typed).
Definition point_cloud_factory.hpp:108
static DensePointCloudPtr CreateDense(const Cvb::ImagePlane &rangeMap, Factors3D factors, PointCloudFlags flags)
Creates a new Cartesian 3D point cloud from the given 2.5D range map image.
Definition point_cloud_factory.hpp:279
static DensePointCloudPtr CreateDense(Size2D< int > size, PointCloudFlags flags)
Creates a new dense Cartesian 3D point cloud.
Definition point_cloud_factory.hpp:257
static PointCloudPtr CreateWithSettings(const ImagePlane &rangeMap, const Calibrator3D &calibrator, PointCloudFlags flags, const SensorSettings &settings, double encoderStep)
Creates a new Cartesian 3D point cloud from the given 2.5D range map image with modified camera setti...
Definition point_cloud_factory.hpp:155
static std::shared_ptr< T > CreateWithSettings(const ImagePlane &rangeMap, const Calibrator3D &calibrator, PointCloudFlags flags, const SensorSettings &settings, double encoderStep)
Creates a new Cartesian 3D point cloud from the given 2.5D range map image with modified camera setti...
Definition point_cloud_factory.hpp:182
static PointCloudPtr Create(const ImagePlane &rangeMap, const Calibrator3D &calibrator, PointCloudFlags flags)
Creates a new Cartesian 3D point cloud from the given 2.5D range map image.
Definition point_cloud_factory.hpp:85
Class to store camera sensor settings.
Definition sensor_settings.hpp:26
Stores a pair of numbers that represents the width and the height of a subject, typically a rectangle...
Definition size_2d.hpp:20
T Height() const noexcept
Gets the vertical component of the size.
Definition size_2d.hpp:77
T Width() const noexcept
Gets the horizontal component of the size.
Definition size_2d.hpp:57
A sparse Cartesian 3D point cloud object.
Definition decl_sparse_point_cloud.hpp:29
Root namespace for the Image Manager interface.
Definition c_barcode.h:15
PointCloudFlags
Flags for creating point clouds.
Definition core_3d.hpp:90
std::string String
String for wide characters or unicode characters.
Definition string.hpp:49
std::shared_ptr< PointCloud > PointCloudPtr
Convenience shared pointer for PointCloud.
Definition core_3d.hpp:40
std::shared_ptr< SparsePointCloud > SparsePointCloudPtr
Convenience shared pointer for SparsePointCloud.
Definition core_3d.hpp:48
std::shared_ptr< DensePointCloud > DensePointCloudPtr
Convenience shared pointer for DensePointCloud.
Definition core_3d.hpp:44
T dynamic_pointer_cast(T... args)
Factor components to be applied in the 3D domain.
Definition core_3d.hpp:16