3 from __future__
import division
10 from jsk_gui_msgs.msg
import SlackMessage
11 import message_filters
13 from sensor_msgs.msg
import Image
15 from std_msgs.msg
import String
23 self.
pub_str = rospy.Publisher(
'~output/string', String, queue_size=1)
25 '~output/slack_msg', SlackMessage, queue_size=1)
28 if rospy.get_param(
'~sound',
True):
37 target_label_names = rospy.get_param(
'~target_label_names')
38 for lname
in target_label_names:
39 self.target_labels.append(self.label_names.index(lname))
43 '~input/image', Image, queue_size=1)
45 '~input/label', Image, queue_size=1)
46 queue_size = rospy.get_param(
'~queue_size', 100)
47 if rospy.get_param(
'~approximate_sync',
False):
51 slop = rospy.get_param(
'~slop', 0.1)
52 self.
sync = message_filters.ApproximateTimeSynchronizer(
54 self.sync.registerCallback(self.
input_cb)
57 if os.path.exists(self.
tmpdir):
61 bridge = cv_bridge.CvBridge()
62 label = bridge.imgmsg_to_cv2(label_msg)
65 label_region = (label == lval).sum() / label.size
67 found_labels.append(lval)
70 rospy.loginfo(
'No label is found')
73 text =
' and '.join(self.
label_names[lval]
for lval
in found_labels)
76 self.pub_str.publish(String(data=text))
80 if self.pub_slack.get_num_connections() > 0:
81 slack_msg = SlackMessage(text=text)
83 slack_msg.image = imgmsg
84 self.pub_slack.publish(slack_msg)
87 if __name__ ==
'__main__':
88 rospy.init_node(
'speak_when_label_found')
def input_cb(self, imgmsg, label_msg)