Сделали класс

This commit is contained in:
IliaMiheev
2026-02-16 13:59:55 +03:00
parent 1bbab8cfcd
commit 934fdb6d99
+15 -11
View File
@@ -1,9 +1,13 @@
color='' class ColorDetect():
def __init__(self):
self.color = None
def detect_color_callback(data, print_type='str'): def getColor(self):
return self.color
def detect_color_callback(self, data, print_type='str'):
'''определение цвета''' '''определение цвета'''
global color
frame = bridge.imgmsg_to_cv2(data, 'bgr8') frame = bridge.imgmsg_to_cv2(data, 'bgr8')
height, width = frame.shape[:2] height, width = frame.shape[:2]
y_start = int(height * 0.33) y_start = int(height * 0.33)
@@ -21,7 +25,7 @@ def detect_color_callback(data, print_type='str'):
mean_bgr = cv2.mean(cropped_frame)[:3] mean_bgr = cv2.mean(cropped_frame)[:3]
mean_rgb = (int(mean_bgr[2]), int(mean_bgr[1]), int(mean_bgr[0])) mean_rgb = (int(mean_bgr[2]), int(mean_bgr[1]), int(mean_bgr[0]))
color = str(mean_rgb) self.color = str(mean_rgb)
elif print_type == 'str': elif print_type == 'str':
@@ -32,24 +36,24 @@ def detect_color_callback(data, print_type='str'):
if b > g and b > r and b > 100: if b > g and b > r and b > 100:
color = 'blue' self.color = 'blue'
elif g > b and g > r and g > 100: elif g > b and g > r and g > 100:
color = 'green' self.color = 'green'
elif r > b and r > g and r > 100: elif r > b and r > g and r > 100:
color = 'red' self.color = 'red'
else: else:
color = 'unknown' self.color = None
return(color)
#в MAIN для вызова функции должно быть: #в MAIN для вызова функции должно быть:
# cd = ColorDetect()
#color_sub = rospy.Subscriber('main_camera/image_raw', Image, #color_sub = rospy.Subscriber('main_camera/image_raw', Image,
#lambda img: detect_color_callback(img, print_type='rgb'), #lambda img: cd.detect_color_callback(img, print_type='rgb'),
#queue_size=1) #queue_size=1)
# print(cd.getColor())
#rospy.sleep(2) #rospy.sleep(2)
#color_sub.unregister() #color_sub.unregister()