39 #ifndef PCL_DATA_TYPES_H_
40 #define PCL_DATA_TYPES_H_
42 #include <pcl/pcl_macros.h>
44 #include <pcl/register_point_struct.h>
45 #include <boost/mpl/contains.hpp>
46 #include <boost/mpl/fold.hpp>
47 #include <boost/mpl/vector.hpp>
58 #pragma warning(disable: 4201)
62 # pragma GCC system_header
141 struct InterestPoint;
161 struct PointXYZRGBNormal;
166 struct PointXYZINormal;
171 struct PointWithRange;
176 struct PointWithViewpoint;
181 struct MomentInvariants;
186 struct PrincipalRadiiRSD;
196 struct PrincipalCurvatures;
211 struct ReferenceFrame;
216 struct ShapeContext1980;
221 struct PFHSignature125;
226 struct PFHRGBSignature250;
236 struct CPPFSignature;
241 struct PPFRGBSignature;
246 struct NormalBasedSignature12;
251 struct FPFHSignature33;
256 struct VFHSignature308;
261 struct ESFSignature640;
266 struct GFPFHSignature16;
293 struct BorderDescription;
298 struct IntensityGradient;
309 struct PointWithScale;
319 #include <pcl/impl/point_types.hpp>
326 (uint32_t, rgba, rgba)
328 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::RGB,
pcl::_RGB)
331 (
float, intensity, intensity)
333 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Intensity,
pcl::_Intensity)
336 (uint8_t, intensity, intensity)
338 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Intensity8u,
pcl::_Intensity8u)
341 (uint32_t, intensity, intensity)
343 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Intensity32u,
pcl::_Intensity32u)
350 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZ,
pcl::_PointXYZ)
356 (uint32_t, rgba, rgba)
358 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZRGBA,
pcl::_PointXYZRGBA)
366 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZRGB,
pcl::_PointXYZRGB)
372 (uint32_t, rgba, rgba)
373 (uint32_t, label, label)
375 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZRGBL,
pcl::_PointXYZRGBL)
385 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZHSV,
pcl::_PointXYZHSV)
401 (
float, strength, strength)
408 (
float, intensity, intensity)
410 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZI,
pcl::_PointXYZI)
416 (uint32_t, label, label)
420 (uint32_t, label, label)
424 (
float, normal_x, normal_x)
425 (
float, normal_y, normal_y)
426 (
float, normal_z, normal_z)
427 (
float, curvature, curvature)
429 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Normal,
pcl::_Normal)
432 (
float, normal_x, normal_x)
433 (
float, normal_y, normal_y)
434 (
float, normal_z, normal_z)
436 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::Axis,
pcl::_Axis)
442 (
float, normal_x, normal_x)
443 (
float, normal_y, normal_y)
444 (
float, normal_z, normal_z)
445 (
float, curvature, curvature)
452 (
float, normal_x, normal_x)
453 (
float, normal_y, normal_y)
454 (
float, normal_z, normal_z)
455 (
float, curvature, curvature)
457 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointXYZRGBNormal,
pcl::_PointXYZRGBNormal)
462 (
float, intensity, intensity)
463 (
float, normal_x, normal_x)
464 (
float, normal_y, normal_y)
465 (
float, normal_z, normal_z)
466 (
float, curvature, curvature)
472 (
float, range, range)
483 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::PointWithViewpoint,
pcl::_PointWithViewpoint)
492 (
float, r_min, r_min)
493 (
float, r_max, r_max)
497 (uint8_t, boundary_point, boundary_point)
501 (
float, principal_curvature_x, principal_curvature_x)
502 (
float, principal_curvature_y, principal_curvature_y)
503 (
float, principal_curvature_z, principal_curvature_z)
509 (
float[125], histogram, pfh)
513 (
float[250], histogram, pfhrgb)
521 (
float, alpha_m, alpha_m)
535 (
float, alpha_m, alpha_m)
543 (
float, r_ratio, r_ratio)
544 (
float, g_ratio, g_ratio)
545 (
float, b_ratio, b_ratio)
546 (
float, alpha_m, alpha_m)
550 (
float[12], values, values)
554 (
float[1980], descriptor, shape_context)
559 (
float[352], descriptor, shot)
564 (
float[1344], descriptor, shot)
569 (
float[33], histogram, fpfh)
573 (
float[308], histogram, vfh)
577 (
float[640], histogram, esf)
581 (
float[36], descriptor, descriptor)
585 (
float[16], histogram, gfpfh)
589 (
float, gradient_x, gradient_x)
590 (
float, gradient_y, gradient_y)
591 (
float, gradient_z, gradient_z)
598 (
float, scale, scale)
605 (
float, normal_x, normal_x)
606 (
float, normal_y, normal_y)
607 (
float, normal_z, normal_z)
608 (uint32_t, rgba, rgba)
609 (
float, radius, radius)
610 (
float, confidence, confidence)
611 (
float, curvature, curvature)
615 (
float[3], x_axis, x_axis)
616 (
float[3], y_axis, y_axis)
617 (
float[3], z_axis, z_axis)
619 POINT_CLOUD_REGISTER_POINT_WRAPPER(
pcl::ReferenceFrame,
pcl::_ReferenceFrame)
625 template<
typename Po
intT>
626 struct FieldMatches<
PointT, fields::rgba>
630 if (field.
name ==
"rgb")
637 return (field.
name == traits::name<PointT, fields::rgba>::value &&
638 field.
datatype == traits::datatype<PointT, fields::rgba>::value &&
639 field.
count == traits::datatype<PointT, fields::rgba>::size);
643 template<
typename Po
intT>
648 if (field.
name ==
"rgba")
655 return (field.
name == traits::name<PointT, fields::rgb>::value &&
656 field.
datatype == traits::datatype<PointT, fields::rgb>::value &&
657 field.
count == traits::datatype<PointT, fields::rgb>::size);
681 template <
typename Po
intT,
typename Field>
682 struct has_field : boost::mpl::contains<typename pcl::traits::fieldList<PointT>::type, Field>::type
686 template <
typename Po
intT,
typename Field>
688 boost::mpl::bool_<true>,
689 boost::mpl::and_<boost::mpl::_1,
690 has_field<PointT, boost::mpl::_2> > >::type
694 template <
typename Po
intT,
typename Field>
696 boost::mpl::bool_<false>,
697 boost::mpl::or_<boost::mpl::_1,
698 has_field<PointT, boost::mpl::_2> > >::type
702 template <
typename Po
intT>
710 template <
typename Po
intT>
712 pcl::fields::normal_y,
713 pcl::fields::normal_z> >
717 template <
typename Po
intT>
722 template <
typename Po
intT>
727 template <
typename Po
intT>
733 template <
typename Po
intT>
742 #pragma warning(default: 4201)
746 #endif //#ifndef PCL_DATA_TYPES_H_
BorderTrait
Specification of the fields for BorderDescription::traits.
Metafunction to check if a given point type has normal_x, normal_y, and normal_z fields.
Metafunction to check if a given point type has either rgb or rgba field.
Metafunction to check if a given point type has curvature field.
Metafunction to check if a given point type has intensity field.
Metafunction to check if a given point type has any of the given fields.
Metafunction to check if a given point type has x, y, and z fields.
POINT_CLOUD_REGISTER_POINT_STRUCT(pcl::_PointXYZLAB,(float, x, x)(float, y, y)(float, z, z)(float, L, L)(float, a, a)(float, b, b)) namespace pcl
Metafunction to check if a given point type has all given fields.
Metafunction to check if a given point type has label field.
A point structure representing the Narf descriptor.
A point structure representing Euclidean xyz coordinates, and the RGB color.
Metafunction to check if a given point type has a given field.
std::bitset< 32 > BorderTraits
Data type to store extended information about a transition from foreground to backgroundSpecification...