Я пытаюсь подписаться на CameraInfo и изображение в формате sensor_msgs.msg и использовать его данные для дальнейшей обработки изображения. Вот несколько строк кода, с которого я начинаю:
from sensor_msgs.msg import CameraInfo, Image
from cv_bridge import CvBridge, CvBridgeError
import cv2
if __name__ == '__main__':
rospy.init_node('node_name')
while ~rospy.is_shutdown():
sub_cam_info = rospy.Subscriber('/camera/rgb/raw_camera_info', CameraInfo)
sub_rgb = rospy.Subscriber('/camera/rgb/raw_image_color', Image)
Отсюда я хочу извлечь информацию заголовка и данных из 'sub_cam_info' и 'sub_rgb'. Примерно так:
camera_info_K = sub_cam_info.K
camera_info_dist_model = sub_cam_info.distortion_model
rgb_image = CvBridge().imgmsg_to_cv2(sub_rgb, encoding="rgb8")
А затем использовать эти данные для искажения изображения: -
rgb_undist = cv2.undistort(rgb_img.data, camera_info_K, camera_info_dist_model)
В основном мне нужна помощь во второй части, т.е. извлечение параметров из сообщений CameraInfo и Image. Однако, если кто-то может помочь мне разобраться в теле всего этого кода! Я уже готовил свои собственные сообщения CameraInfo и RGB, использовал их для искажения и публикации на ROS, но теперь я хочу получить их из другого модуля ROS и работать с ними.