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" 35 auto pointCloud = std::dynamic_pointer_cast<T>(
Load(fileName, flags));
50 return Internal::DoResCallShareOut<PointCloud>([&](
void* & handle)
52 return CVB_CALL_CAPI(CVC3DLoadFileTyped(fileName.c_str(), static_cast<CExports::cvbval_t>(flags), handle));
70 auto pointCloud =
Create(rangeMap, calibrator, flags);
71 auto typedPointCloud = std::dynamic_pointer_cast<T>(pointCloud);
73 typedPointCloud = TypeConvert<T>::Convert(*pointCloud);
74 return typedPointCloud;
94 return Internal::DoResCallShareOut<PointCloud>([&](
void* & handle)
96 return CVB_CALL_CAPI(CVC3DCreateCalibratedPointCloudFromRangeMap(rangeMap.
Map()->Handle(), calibrator.
Handle(), static_cast<CExports::cvbval_t>(flags), handle));
117 auto pointCloud =
CreateWithSettings(rangeMap, calibrator, flags, settings, encoderStep);
118 auto typedPointCloud = std::dynamic_pointer_cast<T>(pointCloud);
119 if (!typedPointCloud)
120 typedPointCloud = TypeConvert<T>::Convert(*pointCloud);
121 return typedPointCloud;
146 return Internal::DoResCallShareOut<PointCloud>([&](
void*& handle)
148 return CVB_CALL_CAPI(CVC3DCreateCalibratedPointCloudFromRangeMapWithSettings(
149 rangeMap.
Map()->Handle(),
151 *reinterpret_cast<CExports::CVC3DSensorSettings*>(const_cast<SensorSettings*>(&settings)),
153 static_cast<CExports::cvbval_t>(flags), handle));
173 return std::dynamic_pointer_cast<SparsePointCloud>(Internal::DoResCallShareOut<PointCloud>([&](
void * & handle)
175 return CVB_CALL_CAPI(CVC3DCreateSparsePointCloud(
176 static_cast<CExports::cvbint64_t>(numPoints),
177 static_cast<CExports::cvbval_t>(flags),
196 return std::dynamic_pointer_cast<SparsePointCloud>(Internal::DoResCallShareOut<PointCloud>([&](
void * & handle)
199 std::copy(planeIncs.begin(), planeIncs.end(), tmpPlaneIncs);
200 return CVB_CALL_CAPI(CVC3DCreateSparsePointCloudFromPointer(
201 const_cast<void**>(planeBasePtrs.data()),
202 static_cast<CExports::cvbdim_t>(numPlanes),
204 static_cast<std::size_t>(numPoints),
206 [](
void *,
void *) {},
228 return std::dynamic_pointer_cast<DensePointCloud>(Internal::DoResCallShareOut<PointCloud>([&](
void * & handle)
230 return CVB_CALL_CAPI(CVC3DCreateDensePointCloud(size.
Width(), size.
Height(), static_cast<CExports::cvbval_t>(flags), handle));
245 return std::dynamic_pointer_cast<DensePointCloud>(Internal::DoResCallShareOut<PointCloud>([&](
void* & handle)
247 return CVB_CALL_CAPI(CVC3DCreateDensePointCloudFromRangeMap(rangeMap.
Map()->Handle(),
248 *reinterpret_cast<CExports::CVC3DFactors*>(&factors), static_cast<CExports::cvbval_t>(flags),
257 struct TypeConvert{};
262 struct PointCloudFactory::TypeConvert<DensePointCloud>
266 const auto& sparse = dynamic_cast<const SparsePointCloud&>(pointCloud);
267 return sparse.ToDensePointCloud();
272 struct PointCloudFactory::TypeConvert<SparsePointCloud>
276 const auto& dense = dynamic_cast<const DensePointCloud&>(pointCloud);
277 return dense.ToSparsePointCloud();
T Height() const noexcept
Gets the vertical component of the size.
Definition: size_2d.hpp:79
Image plane information container.
Definition: decl_image_plane.hpp:31
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:92
Base calibration class to apply 3D calibration to point clouds.
Definition: decl_calibrator_3d.hpp:66
Factor components to be applied in the 3D domain.
Definition: core_3d.hpp:16
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:114
std::shared_ptr< DensePointCloud > DensePointCloudPtr
Convenience shared pointer for DensePointCloud.
Definition: core_3d.hpp:44
int NativeDescriptor() const noexcept
Native data type descriptor.
Definition: data_type.hpp:322
std::shared_ptr< SparsePointCloud > SparsePointCloudPtr
Convenience shared pointer for SparsePointCloud.
Definition: core_3d.hpp:48
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:67
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:194
Root namespace for the Image Manager interface.
Definition: version.hpp:11
static PointCloudPtr Load(const String &fileName, PointCloudFlags flags)
Loads a 3D point, polygon or mesh file.
Definition: point_cloud_factory.hpp:48
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:32
void * Handle() const noexcept
Returns C-API style handle to Node Object.
Definition: decl_calibrator_3d.hpp:176
Class to store camera sensor settings.
Definition: sensor_settings.hpp:25
Factory object for creating point cloud objects.
Definition: point_cloud_factory.hpp:20
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:144
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
Data type description for an image plane.
Definition: data_type.hpp:27
static DensePointCloudPtr CreateDense(Size2D< int > size, PointCloudFlags flags)
Creates a new dense Cartesian 3D point cloud.
Definition: point_cloud_factory.hpp:226
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:243
static SparsePointCloudPtr CreateSparse(std::size_t numPoints, PointCloudFlags flags)
Creates a new sparse Cartesian 3D point cloud.
Definition: point_cloud_factory.hpp:171
PointCloudFlags
Flags for creating point clouds.
Definition: core_3d.hpp:89
T Width() const noexcept
Gets the horizontal component of the size.
Definition: size_2d.hpp:59