шаблоны

шаблоны для автономного полёта, сканирования кьюар кода, определения цвета и экстренной посадки
This commit is contained in:
alisagerasimova
2026-02-15 18:41:29 +03:00
parent 4bdddf1462
commit fb526825a6
4 changed files with 190 additions and 0 deletions
+55
View File
@@ -0,0 +1,55 @@
color=''
def detect_color_callback(data, print_type='str'):
'''определение цвета'''
global color
frame = bridge.imgmsg_to_cv2(data, 'bgr8')
height, width = frame.shape[:2]
y_start = int(height * 0.33)
y_end = int(height * 0.67)
x_start = int(width * 0.31)
x_end = int(width * 0.69)
cropped_frame = frame[y_start:y_end, x_start:x_end]
if cropped_frame.size == 0:
return
if print_type == 'rgb':
mean_bgr = cv2.mean(cropped_frame)[:3]
mean_rgb = (int(mean_bgr[2]), int(mean_bgr[1]), int(mean_bgr[0]))
color = str(mean_rgb)
elif print_type == 'str':
# Получаем средние значения BGR
mean_bgr = cv2.mean(cropped_frame)[:3]
b, g, r = int(mean_bgr[0]), int(mean_bgr[1]), int(mean_bgr[2])
if b > g and b > r and b > 100:
color = 'blue'
elif g > b and g > r and g > 100:
color = 'green'
elif r > b and r > g and r > 100:
color = 'red'
else:
color = 'unknown'
return(color)
#в MAIN для вызова функции должно быть:
#color_sub = rospy.Subscriber('main_camera/image_raw', Image,
#lambda img: detect_color_callback(img, print_type='rgb'),
#queue_size=1)
#rospy.sleep(2)
#color_sub.unregister()