CVB++ 15.0
Loading...
Searching...
No Matches
decl_metric_segmentor_dense_point_cloud_aqs12.hpp
1#pragma once
2
3#include "decl_metric_segmentor_dense_point_cloud.hpp"
4
5namespace Cvb
6{
7 CVB_BEGIN_INLINE_NS
8
9 namespace Foundation
10 {
11 namespace Metric
12 {
18 class AQS12DensePointCloudSegmentor final : public DensePointCloudSegmentor
19 {
20 friend class DensePointCloudSegmentor;
21
22 public:
23 AQS12DensePointCloudSegmentor(HandleGuard<DensePointCloudSegmentor> &&guard, PrivateTag) noexcept
24 : DensePointCloudSegmentor(std::move(guard))
25 {
26 }
27
29
38 {
40 Internal::DoResCallShareOut<DensePointCloudSegmentor>([&](void *&handle) {
41 return CVB_CALL_CAPI(CVMAQS12CreateSegmentorForDensePointCloud(
42 *reinterpret_cast<const CExports::CVMAQS12SegmentationMethod *>(&method), handle));
43 }));
44 }
45
47
57 {
58 return Internal::DoResCallObjectOut<Image>([&](void *&handle) {
59 return CVB_CALL_CAPI(
60 CVMAQS12CreateFaceSegmentationImageFromDensePointCloud(cloud.Handle(), Handle(), handle));
61 });
62 }
63
66
81 {
82 return Internal::DoResCallObjectOut<Image>([&](void *&handle) {
83 return CVB_CALL_CAPI(CVMAQS12CreateFaceSegmentationImageFromDensePointCloudRect(
84 cloud.Handle(), aoi.Left(), aoi.Top(), aoi.Right(), aoi.Bottom(), Handle(), handle));
85 });
86 }
87
90
98 {
100 CVB_CALL_CAPI(CVMAQS12ExtractProjectedPointsFromDensePointCloud(
101 cloud.Handle(), Handle(), reinterpret_cast<Cvb::CExports::CVC3DPointD *>(points.data())));
102
103 return points;
104 }
105
108
121 Rect<int> aoi) override
122 {
124 CVB_CALL_CAPI(CVMAQS12ExtractProjectedPointsFromDensePointCloudRect(
125 cloud.Handle(), aoi.Left(), aoi.Top(), aoi.Right(), aoi.Bottom(), Handle(),
126 reinterpret_cast<Cvb::CExports::CVC3DPointD *>(points.data())));
127
128 return points;
129 }
130 };
131
132 } // namespace Metric
133 } // namespace Foundation
134
135 CVB_END_INLINE_NS
136} // namespace Cvb
A dense Cartesian 3D point cloud object.
Definition decl_dense_point_cloud.hpp:30
std::vector< Point3D< double > > ExtractProjectedPointsFromPiece(const DensePointCloud &cloud) override
Extracts 12 intersection points of the AQS12 calibration piece from the given dense point cloud.
Definition decl_metric_segmentor_dense_point_cloud_aqs12.hpp:97
static std::shared_ptr< AQS12DensePointCloudSegmentor > Create(const SegmentationMethod method)
Creates a AQS12 segmentor for dense point clouds based on given segmentation method.
Definition decl_metric_segmentor_dense_point_cloud_aqs12.hpp:37
std::vector< Point3D< double > > ExtractProjectedPointsFromPiece(const DensePointCloud &cloud, Rect< int > aoi) override
Extracts 12 intersection points of the AQS12 calibration piece from the dense point cloud on the give...
Definition decl_metric_segmentor_dense_point_cloud_aqs12.hpp:120
std::unique_ptr< Image > FaceSegmentationFromPiece(const DensePointCloud &cloud) override
Segments the AQS12 calibration piece from the given dense point cloud.
Definition decl_metric_segmentor_dense_point_cloud_aqs12.hpp:56
std::unique_ptr< Image > FaceSegmentationFromPiece(const DensePointCloud &cloud, Rect< int > aoi) override
Segments the AQS12 calibration piece from the dense point cloud on the given area of interest.
Definition decl_metric_segmentor_dense_point_cloud_aqs12.hpp:80
void * Handle() const noexcept
Returns C-API style handle to Node Object.
Definition decl_metric_segmentor_dense_point_cloud.hpp:123
void * Handle() const noexcept
Returns C-API style handle to Node Object.
Definition decl_point_cloud.hpp:773
Rectangle object.
Definition rect.hpp:24
T move(T... args)
Namespace for metric calibration.
Definition decl_metric_aqs12_calibration_piece.hpp:19
SegmentationMethod
Defines the segmentation method for labeling the faces of the calibration piece.
Definition metric.hpp:31
Namespace for the Foundation package.
Definition decl_metric_aqs12_calibration_piece.hpp:11
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
T dynamic_pointer_cast(T... args)