Pub

// Some code
def image_callback(data):
    cv_image = bridge.imgmsg_to_cv2(data, 'bgr8')

image_sub = rospy.Subscriber('main_camera/image_raw', Image, image_callback) # Подписчик на получение изображения
image_pub = rospy.Publisher('~debug', Image) # Для публикации обработанного изображения в топик debug
image_pub.publish(bridge.cv2_to_imgmsg(cv_image, 'bgr8')) # Публикация обработанного изображения (cv_image) в debug

def cb(data):
    x = data.data
rospy.Subscriber('/temp', Int16, cb) # Подписчик на получение сообщений типа Int16 из топика /temp и передача в функцию cb
image_pub = rospy.Publisher('/temp', Int16) # ???
image_pub.publish(2)


detect = rospy.Publisher('/Detect', Image, queue_size=1)

im = bridge.imgmsg_to_cv2(data, 'bgr8')[110:150, 140:180]
out = im.copy()
contours, hierarchy = cv.findContours(thresh, cv.RETR_LIST,
cv.CHAIN_APPROX_SIMPLE)[-2:]
cnt = max(contours, key=cv.contourArea)
cv.drawContours(out, [cnt], -1, (255, 105, 180), 3) # Выделить контур cnt, цвет 255-105-180, толщина обводки 3 пикселя
detect.publish(bridge.cv2_to_imgmsg(out, 'bgr8'))

f = open("Record.txt", 'w')
# калбэк на топик, в который публикует telem.py
def telem_rate(msg):
    f.write(str(round(msg.data[0], 2)) + '\t' + str(round(msg.data[1], 2)) +'\t' + str(round(msg.data[2], 2)) + '\n')
telem_sub = rospy.Subscriber('/telem', Float32MultiArray, telem_rate, queue_size=1)
telem_sub.unregister() # Отписка от топика
f.close() # Конец записи

frame = bridge.imgmsg_to_cv2(data, 'bgr8')
(x, y, w, h) = barcode.rect
cv.rectangle(frame, (x, y), (x + w, y + h), (255, 105, 180), 3)
detect.publish(bridge.cv2_to_imgmsg(frame, 'bgr8'))

Last updated