rect_array_to_image_marker.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 
3 import rospy
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
9 from geometry_msgs.msg import Point
10 class RectArrayToImageMarker(ConnectionBasedTransport):
11  def __init__(self):
12  super(RectArrayToImageMarker, self).__init__()
13  self.pub = self.advertise("~output", ImageMarker2, queue_size=1)
14 
15  def subscribe(self):
16  self.sub = rospy.Subscriber("~input", RectArray, self.convert)
17 
18  def unsubscribe(self):
19  self.sub.unregister()
20 
21  def convert(self, msg):
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)]
32  color = cmap[rect_i]
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)
40 
41 
42 if __name__ == '__main__':
43  rospy.init_node('rect_array_to_image_marker')
44  rect_array_to_image_marker = RectArrayToImageMarker()
45  rospy.spin()


jsk_perception
Author(s): Manabu Saito, Ryohei Ueda
autogenerated on Mon May 3 2021 03:03:27