@@ -5,6 +5,9 @@ import cv2
5
5
import rospy
6
6
7
7
from cv_bridge import CvBridge , CvBridgeError
8
+ from pynput import keyboard
9
+ from pynput .keyboard import KeyCode
10
+ from scipy .spatial import distance
8
11
from sensor_msgs .msg import Image
9
12
from geometry_msgs .msg import PointStamped
10
13
@@ -32,19 +35,35 @@ def callbackImageClickReceived(point_msg):
32
35
global points
33
36
points .append (point )
34
37
38
+ def key_pressed (key ):
39
+ global save
40
+ if key == KeyCode .from_char ('s' ):
41
+ print ('True' )
42
+ save = True
35
43
36
44
def main ():
45
+ global save
46
+
47
+ save = False
48
+
37
49
rospy .init_node ('test_image_display_with_click' , anonymous = False )
38
50
39
51
topic_image = rospy .names .remap_name ('image_topic' )
40
52
topic_image_labeled = topic_image + '/labeled'
41
53
topic_image_click = topic_image_labeled + '/click'
42
54
55
+ # Defining acceptable radius
56
+ radius = 3
57
+
43
58
global image
44
59
subscriber_image = rospy .Subscriber (topic_image , Image , partial (callbackImageReceived ))
45
60
subscriber_image_click = rospy .Subscriber (topic_image_click , PointStamped , callbackImageClickReceived )
46
61
publisher_image = rospy .Publisher (topic_image_labeled , Image , queue_size = 10 )
47
62
63
+ # Defining keyboard listener
64
+ keyboard_listener = keyboard .Listener (on_press = key_pressed )
65
+ keyboard_listener .start ()
66
+
48
67
cv2 .namedWindow ('Image' , cv2 .WINDOW_AUTOSIZE )
49
68
50
69
rate = rospy .Rate (0.1 )
@@ -67,6 +86,10 @@ def main():
67
86
image_msg = bridge .cv2_to_imgmsg (gui_image )
68
87
publisher_image .publish (image_msg )
69
88
89
+ if save :
90
+ start_to_end_distance = distance .euclidean (points [1 ], points [- 1 ])
91
+ print (start_to_end_distance )
92
+
70
93
# Show just for debug, not usually used
71
94
cv2 .imshow ("Image" , gui_image )
72
95
cv2 .waitKey (30 )
0 commit comments