1 #ifndef FACE_DETECTOR_COMMON_H_
2 #define FACE_DETECTOR_COMMON_H_
4 #include <pcl/features/integral_image2D.h>
9 namespace face_detection
14 std::vector<boost::shared_ptr<pcl::IntegralImage2D<float, 1> > >
iimages_;
22 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
44 stream.write (reinterpret_cast<const char*> (&row1_),
sizeof(row1_));
45 stream.write (reinterpret_cast<const char*> (&col1_),
sizeof(col1_));
46 stream.write (reinterpret_cast<const char*> (&row2_),
sizeof(row2_));
47 stream.write (reinterpret_cast<const char*> (&col2_),
sizeof(col2_));
48 stream.write (reinterpret_cast<const char*> (&wsizex1_),
sizeof(wsizex1_));
49 stream.write (reinterpret_cast<const char*> (&wsizex2_),
sizeof(wsizex2_));
50 stream.write (reinterpret_cast<const char*> (&wsizey1_),
sizeof(wsizey1_));
51 stream.write (reinterpret_cast<const char*> (&wsizey2_),
sizeof(wsizey2_));
52 stream.write (reinterpret_cast<const char*> (&threshold_),
sizeof(threshold_));
53 stream.write (reinterpret_cast<const char*> (&used_ii_),
sizeof(used_ii_));
58 stream.read (reinterpret_cast<char*> (&row1_),
sizeof(row1_));
59 stream.read (reinterpret_cast<char*> (&col1_),
sizeof(col1_));
60 stream.read (reinterpret_cast<char*> (&row2_),
sizeof(row2_));
61 stream.read (reinterpret_cast<char*> (&col2_),
sizeof(col2_));
62 stream.read (reinterpret_cast<char*> (&wsizex1_),
sizeof(wsizex1_));
63 stream.read (reinterpret_cast<char*> (&wsizex2_),
sizeof(wsizex2_));
64 stream.read (reinterpret_cast<char*> (&wsizey1_),
sizeof(wsizey1_));
65 stream.read (reinterpret_cast<char*> (&wsizey2_),
sizeof(wsizey2_));
66 stream.read (reinterpret_cast<char*> (&threshold_),
sizeof(threshold_));
67 stream.read (reinterpret_cast<char*> (&used_ii_),
sizeof(used_ii_));
71 template<
class FeatureType>
88 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
93 const int num_of_sub_nodes =
static_cast<int> (sub_nodes.size ());
94 stream.write (reinterpret_cast<const char*> (&num_of_sub_nodes),
sizeof(num_of_sub_nodes));
96 if (sub_nodes.size () > 0)
99 stream.write (reinterpret_cast<const char*> (&threshold),
sizeof(threshold));
102 stream.write (reinterpret_cast<const char*> (&value),
sizeof(value));
103 stream.write (reinterpret_cast<const char*> (&variance),
sizeof(variance));
105 for (
size_t i = 0; i < 3; i++)
106 stream.write (reinterpret_cast<const char*> (&trans_mean_[i]),
sizeof(trans_mean_[i]));
108 for (
size_t i = 0; i < 3; i++)
109 stream.write (reinterpret_cast<const char*> (&rot_mean_[i]),
sizeof(rot_mean_[i]));
111 for (
size_t i = 0; i < 3; i++)
112 for (
size_t j = 0; j < 3; j++)
113 stream.write (reinterpret_cast<const char*> (&covariance_trans_ (i, j)),
sizeof(covariance_trans_ (i, j)));
115 for (
size_t i = 0; i < 3; i++)
116 for (
size_t j = 0; j < 3; j++)
117 stream.write (reinterpret_cast<const char*> (&covariance_rot_ (i, j)),
sizeof(covariance_rot_ (i, j)));
119 for (
int sub_node_index = 0; sub_node_index < num_of_sub_nodes; ++sub_node_index)
121 sub_nodes[sub_node_index].serialize (stream);
127 int num_of_sub_nodes;
128 stream.read (reinterpret_cast<char*> (&num_of_sub_nodes),
sizeof(num_of_sub_nodes));
130 if (num_of_sub_nodes > 0)
133 stream.read (reinterpret_cast<char*> (&threshold),
sizeof(threshold));
136 stream.read (reinterpret_cast<char*> (&value),
sizeof(value));
137 stream.read (reinterpret_cast<char*> (&variance),
sizeof(variance));
139 for (
size_t i = 0; i < 3; i++)
140 stream.read (reinterpret_cast<char*> (&trans_mean_[i]),
sizeof(trans_mean_[i]));
142 for (
size_t i = 0; i < 3; i++)
143 stream.read (reinterpret_cast<char*> (&rot_mean_[i]),
sizeof(rot_mean_[i]));
145 for (
size_t i = 0; i < 3; i++)
146 for (
size_t j = 0; j < 3; j++)
147 stream.read (reinterpret_cast<char*> (&covariance_trans_ (i, j)),
sizeof(covariance_trans_ (i, j)));
149 for (
size_t i = 0; i < 3; i++)
150 for (
size_t j = 0; j < 3; j++)
151 stream.read (reinterpret_cast<char*> (&covariance_rot_ (i, j)),
sizeof(covariance_rot_ (i, j)));
153 sub_nodes.resize (num_of_sub_nodes);
155 if (num_of_sub_nodes > 0)
157 for (
int sub_node_index = 0; sub_node_index < num_of_sub_nodes; ++sub_node_index)
159 sub_nodes[sub_node_index].deserialize (stream);
Eigen::Vector3d trans_mean_
Eigen::Matrix3d covariance_rot_
std::vector< boost::shared_ptr< pcl::IntegralImage2D< float, 1 > > > iimages_
void deserialize(std::istream &stream)
This file defines compatibility wrappers for low level I/O functions.
void deserialize(::std::istream &stream)
Eigen::Vector3d rot_mean_
EIGEN_MAKE_ALIGNED_OPERATOR_NEW void serialize(::std::ostream &stream) const
std::vector< RFTreeNode > sub_nodes
void serialize(std::ostream &stream) const
Eigen::Matrix3d covariance_trans_