44 bool _color,
bool out1_filter)
55 name =
"left/image_rect";
59 name =
"right/image_rect";
64 name = name +
"_color";
83 publish(buffer, part, pixelformat,
false);
99 sensor_msgs::ImagePtr im = boost::make_shared<sensor_msgs::Image>();
101 const uint64_t freq = 1000000000ul;
104 im->header.seq =
seq++;
105 im->header.stamp.sec = time / freq;
106 im->header.stamp.nsec = time - freq * im->header.stamp.sec;
111 im->width =
static_cast<uint32_t
>(buffer->
getWidth(part));
112 im->height =
static_cast<uint32_t
>(buffer->
getHeight(part));
113 im->is_bigendian =
false;
115 bool stacked =
false;
117 if (im->height > im->width)
125 const uint8_t* ps =
static_cast<const uint8_t*
>(buffer->
getBase(part));
126 size_t pstep = im->width + buffer->
getXPadding(part);
130 pstep = (im->width >> 2) * 6 + buffer->
getXPadding(part);
132 else if (pixelformat ==
RGB8)
142 ps += pstep * im->height;
155 im->step = 3 * im->width *
sizeof(uint8_t);
157 im->data.resize(im->step * im->height);
158 uint8_t* pt =
reinterpret_cast<uint8_t*
>(&im->data[0]);
160 if (pixelformat ==
Mono8)
166 for (uint32_t k = 0; k < im->height; k++)
168 for (uint32_t i = 0; i < im->width; i += 4)
177 else if (pixelformat ==
RGB8)
179 for (uint32_t k = 0; k < im->height; k++)
181 for (uint32_t i = 0; i < im->width; i++)
195 im->step = im->width *
sizeof(uint8_t);
197 im->data.resize(im->step * im->height);
198 uint8_t* pt =
reinterpret_cast<uint8_t*
>(&im->data[0]);
200 if (pixelformat ==
Mono8)
202 for (uint32_t k = 0; k < im->height; k++)
204 for (uint32_t i = 0; i < im->width; i++)
214 for (uint32_t k = 0; k < im->height; k++)
218 for (uint32_t i = 0; i < im->width; i += 4)
230 else if (pixelformat ==
RGB8)
232 for (uint32_t k = 0; k < im->height; k++)
234 for (uint32_t i = 0; i < im->width; i++)
236 *pt++ =
static_cast<uint8_t
>((9798*ps[0]+19234*ps[1]+3736*ps[2])>>15);