Go to the documentation of this file.
2 #include <jsk_topic_tools/log_utils.h>
3 #include <sensor_msgs/Image.h>
4 #include <sensor_msgs/PointCloud2.h>
8 #include "jsk_perception/WhiteBalance.h"
9 #include "jsk_perception/WhiteBalancePoints.h"
41 if (pnh.
hasParam(
"parameter_matrix")) {
43 pnh.
getParam(
"parameter_matrix", param_val);
46 for (
int i = 0;
i < 48;
i++) {
50 for (
int i = 0;
i < 12;
i++ ) {
62 jsk_perception::WhiteBalance::Response &res) {
69 jsk_perception::WhiteBalancePoints::Response &res) {
73 for (
size_t i = 0;
i <
req.input.fields.size();
i++) {
74 if (
req.input.fields[
i].name ==
"rgb" ) {
75 rgb_offset =
req.input.fields[
i].offset;
81 if ( rgb_offset < 0 ) {
82 ROS_WARN(
"point cloud didn't have rgb field");
86 res.output =
req.input;
87 int size =
req.input.height *
req.input.width;
88 int step =
req.input.point_step;
89 unsigned char *sdata = (
unsigned char *) &(
req.input.data[0]);
90 unsigned char *ddata = (
unsigned char *) &(res.output.data[0]);
92 for(
int i = 0;
i < size;
i++, sdata +=
step, ddata +=
step) {
98 rgb.
Red = (
unsigned char)
r;
99 rgb.
Green = (
unsigned char)g;
100 rgb.
Blue = (
unsigned char)b;
101 *((
float *)(ddata + rgb_offset)) = rgb.
float_value;
116 if(
r > 255)
r = 255;
if (
r < 0)
r = 0;
117 if(g > 255) g = 255;
if (g < 0) g = 0;
118 if(b > 255) b = 255;
if (b < 0) b = 0;
122 for(
int i = 0;
i < 12;
i++) {
124 (
pmat[4*
i + 0] * refr ) +
125 (
pmat[4*
i + 1] * refg ) +
126 (
pmat[4*
i + 2] * refb ) +
134 mat(0,0) =
cmat[0]; mat(0,1) =
cmat[1]; mat(0,2) =
cmat[2]; mat(0,3) =
cmat[3];
135 mat(1,0) =
cmat[4]; mat(1,1) =
cmat[5]; mat(1,2) =
cmat[6]; mat(1,3) =
cmat[7];
136 mat(2,0) =
cmat[8]; mat(2,1) =
cmat[9]; mat(2,2) =
cmat[10]; mat(2,3) =
cmat[11];
137 mat(3,0) = 0.0; mat(3,1) = 0.0; mat(3,2) = 0.0; mat(3,3) = 1.0;
139 Eigen::Matrix4d imat = mat.inverse();
140 cmat[0] = imat(0, 0);
cmat[1] = imat(0, 1);
cmat[2] = imat(0, 2);
cmat[3] = imat(0, 3);
141 cmat[4] = imat(1, 0);
cmat[5] = imat(1, 1);
cmat[6] = imat(1, 2);
cmat[7] = imat(1, 3);
142 cmat[8] = imat(2, 0);
cmat[9] = imat(2, 1);
cmat[10] = imat(2, 2);
cmat[11] = imat(2, 3);
150 int main (
int argc,
char** argv)
ROSCPP_DECL void init(const M_string &remappings, const std::string &name, uint32_t options=0)
bool getParam(const std::string &key, bool &b) const
bool pointsCallback(jsk_perception::WhiteBalancePoints::Request &req, jsk_perception::WhiteBalancePoints::Response &res)
ServiceServer advertiseService(AdvertiseServiceOptions &ops)
ros::ServiceServer service_img_
std::string resolveName(const std::string &name, bool remap=true) const
ros::ServiceServer service_pts_
int main(int argc, char **argv)
ROS_INFO ROS_ERROR int pointer * argv
bool hasParam(const std::string &key) const
void makeConvertMatrix(float refr, float refg, float refb)
const Type & getType() const
void convertColor(int &r, int &g, int &b)
bool imageCallback(jsk_perception::WhiteBalance::Request &req, jsk_perception::WhiteBalance::Response &res)
jsk_perception
Author(s): Manabu Saito, Ryohei Ueda
autogenerated on Fri May 16 2025 03:11:17