Point Cloud Library (PCL)
1.15.1
Toggle main menu visibility
Loading...
Searching...
No Matches
kinfu_large_scale
tools
color_handler.h
1
/*
2
* Software License Agreement (BSD License)
3
*
4
* Copyright (c) 2011, Willow Garage, Inc.
5
* All rights reserved.
6
*
7
* Redistribution and use in source and binary forms, with or without
8
* modification, are permitted provided that the following conditions
9
* are met:
10
*
11
* * Redistributions of source code must retain the above copyright
12
* notice, this list of conditions and the following disclaimer.
13
* * Redistributions in binary form must reproduce the above
14
* copyright notice, this list of conditions and the following
15
* disclaimer in the documentation and/or other materials provided
16
* with the distribution.
17
* * Neither the name of Willow Garage, Inc. nor the names of its
18
* contributors may be used to endorse or promote products derived
19
* from this software without specific prior written permission.
20
*
21
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27
* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32
* POSSIBILITY OF SUCH DAMAGE.
33
*
34
* Author: Anatoly Baskeheev, Itseez Ltd, (myname.mysurname@mycompany.com)
35
*/
36
37
#pragma once
38
39
#include <
pcl/point_types.h
>
40
#include <pcl/point_cloud.h>
41
#include <pcl/visualization/point_cloud_handlers.h>
42
43
namespace
pcl
44
{
45
namespace
visualization
46
{
47
template
<
typename
Po
int
T>
48
class
PointCloudColorHandlerRGBHack
:
public
PointCloudColorHandler
<PointT>
49
{
50
using
PointCloudColorHandler
<PointT>
::capable_
;
51
using
PointCloudColorHandler
<PointT>
::cloud_
;
52
53
using
PointCloudConstPtr =
typename
PointCloudColorHandler<PointT>::PointCloud::ConstPtr
;
54
using
RgbCloudConstPtr =
pcl::PointCloud<RGB>::ConstPtr
;
55
56
public
:
57
using
Ptr
= shared_ptr<PointCloudColorHandlerRGBHack<PointT> >;
58
using
ConstPtr
= shared_ptr<const PointCloudColorHandlerRGBHack<PointT> >;
59
60
PointCloudColorHandlerRGBHack
(
const
PointCloudConstPtr& cloud,
const
RgbCloudConstPtr& colors) :
61
PointCloudColorHandler
<PointT> (cloud), rgb_ (colors)
62
{
63
capable_
=
true
;
64
}
65
66
vtkSmartPointer<vtkDataArray>
67
getColor
()
const override
68
{
69
if
(!
capable_
)
70
return
nullptr
;
71
72
auto
scalars =
vtkSmartPointer<vtkUnsignedCharArray>::New
();
73
scalars->SetNumberOfComponents (3);
74
75
vtkIdType nr_points =
static_cast<
vtkIdType
>
(
cloud_
->size ());
76
reinterpret_cast<
vtkUnsignedCharArray*
>
(&(*scalars))->SetNumberOfTuples (nr_points);
77
unsigned
char
* colors =
reinterpret_cast<
vtkUnsignedCharArray*
>
(&(*scalars))->GetPointer (0);
78
79
// Color every point
80
if
(nr_points !=
static_cast<
vtkIdType
>
(rgb_->size ()))
81
std::fill_n(colors, nr_points * 3, (
unsigned
char
)0xFF);
82
else
83
for
(vtkIdType cp = 0; cp < nr_points; ++cp)
84
{
85
int
idx = cp * 3;
86
colors[idx + 0] = (*rgb_)[cp].r;
87
colors[idx + 1] = (*rgb_)[cp].g;
88
colors[idx + 2] = (*rgb_)[cp].b;
89
}
90
return
scalars;
91
}
92
93
private
:
94
std::string
getFieldName
()
const override
{
return
(
"rgb"
); }
95
inline
std::string
getName
()
const override
{
return
(
"PointCloudColorHandlerRGBHack"
); }
96
RgbCloudConstPtr rgb_;
97
};
98
}
99
}
pcl::PointCloud::ConstPtr
shared_ptr< const PointCloud< PointT > > ConstPtr
Definition
point_cloud.h:415
pcl::visualization::PointCloudColorHandler::PointCloudColorHandler
PointCloudColorHandler()
Constructor.
Definition
point_cloud_color_handlers.h:76
pcl::visualization::PointCloudColorHandler::capable_
bool capable_
True if this handler is capable of handling the input data, false otherwise.
Definition
point_cloud_color_handlers.h:123
pcl::visualization::PointCloudColorHandler::cloud_
PointCloudConstPtr cloud_
A pointer to the input dataset.
Definition
point_cloud_color_handlers.h:118
pcl::visualization::PointCloudColorHandler::getName
virtual std::string getName() const =0
Abstract getName method.
pcl::visualization::PointCloudColorHandler::getFieldName
virtual std::string getFieldName() const =0
Abstract getFieldName method.
pcl::visualization::PointCloudColorHandlerRGBHack::getColor
vtkSmartPointer< vtkDataArray > getColor() const override
Obtain the actual color for the input dataset as a VTK data array.
Definition
color_handler.h:67
pcl::visualization::PointCloudColorHandlerRGBHack::ConstPtr
shared_ptr< const PointCloudColorHandlerRGBHack< PointT > > ConstPtr
Definition
color_handler.h:58
pcl::visualization::PointCloudColorHandlerRGBHack::Ptr
shared_ptr< PointCloudColorHandlerRGBHack< PointT > > Ptr
Definition
color_handler.h:57
pcl::visualization::PointCloudColorHandlerRGBHack::PointCloudColorHandlerRGBHack
PointCloudColorHandlerRGBHack(const PointCloudConstPtr &cloud, const RgbCloudConstPtr &colors)
Definition
color_handler.h:60
vtkSmartPointer
Definition
actor_map.h:51
point_types.h
Defines all the PCL implemented PointT point type structures.
pcl::visualization
Definition
color_handler.h:46
pcl
Definition
convolution.h:46