4 from jsk_topic_tools
import ConnectionBasedTransport
5 from jsk_recognition_msgs.msg
import Rect, RectArray
6 from image_view2.msg
import ImageMarker2
7 import jsk_recognition_utils
8 from std_msgs.msg
import ColorRGBA
12 super(RectArrayToImageMarker, self).
__init__()
13 self.
pub = self.advertise(
"~output", ImageMarker2, queue_size=1)
16 self.
sub = rospy.Subscriber(
"~input", RectArray, self.
convert)
22 marker = ImageMarker2()
23 marker.header = msg.header
24 marker.type = ImageMarker2.LINE_LIST
25 n_colors = min(len(msg.rects), 256)
26 cmap = jsk_recognition_utils.color.labelcolormap(n_colors)
27 for rect, rect_i
in zip(msg.rects, range(n_colors)):
28 points = [(rect.x, rect.y),
29 (rect.x, rect.y + rect.height),
30 (rect.x + rect.width, rect.y + rect.height),
31 (rect.x + rect.width, rect.y)]
33 color_msg = ColorRGBA(r=color[0], g=color[1], b=color[2])
34 for i, j
in ((0, 1), (1, 2), (2, 3), (3, 0)):
35 marker.points.append(Point(x=points[i][0], y=points[i][1]))
36 marker.points.append(Point(x=points[j][0], y=points[j][1]))
37 marker.outline_colors.append(color_msg)
38 marker.outline_colors.append(color_msg)
39 self.pub.publish(marker)
42 if __name__ ==
'__main__':
43 rospy.init_node(
'rect_array_to_image_marker')