Подглава 2.4.1 Интерфейс между ROS и OpenCV
Last updated
Was this helpful?
Last updated
Was this helpful?
Open Source Computer Vision (OpenCV) - это библиотека, в которой есть API для выполнения приложений компьютерного зрения. Проект был начат в Intel Russia, а позже его поддержали Willow Garage и Itseez. В 2016 году Itseez была приобретена Intel.
OpenCV website:
Willow Garage:
Itseez:
OpenCV - это кроссплатформенная библиотека, которая поддерживает большинство операционных систем. Теперь у него также есть лицензия BSD с открытым исходным кодом, поэтому мы можем использовать ее для исследовательских и коммерческих приложений. Версия OpenCV, взаимодействующая с ROS Kinetic, - 3.1. В версиях 3.x OpenCV есть несколько изменений в API по сравнению с версиями 2.x.
Библиотека OpenCV интегрирована в ROS через пакет под названием vision_opencv, Этот пакет уже был установлен, когда мы установили ros-kinetic-desktop-full в главе 1, Начало работы с разработкой приложений ROS Robotics.
vision_opencv В metapackage есть два пакета:
· cv_bridge: Этот пакет отвечает за преобразование типа данных изображения OpenCV (cv::Mat) в ROS Образ Сообщения (sensor_msgs/Image.msg).
· image_geometry: Этот пакет помогает нам интерпретировать изображения геометрически. Этот узел поможет в обработке, такой как калибровка камеры и выпрямление изображения.
Из этих двух пакетов мы в основном имеем дело с cv_bridge. Используя cv_bridge, узел отслеживания лица может конвертировать сообщения ROS Image из usb_cam в эквивалент OpenCV, cv::Mat. После преобразования в cv::Mat мы можем использовать API OpenCV для обработки изображения с камеры.
Вот блок-схема, которая показывает роль cv_bridge в этом проекте:
Здесь cv_bridge работает между узлом usb_cam и узлом отслеживания лица. Мы узнаем больше об узле отслеживания лица в следующем разделе. До этого будет хорошо, если вы получите представление о его работе.
Это все об OpenCV и интерфейсе ROS. В следующем разделе мы будем работать с первым пакетом этого проекта: face_tracker_pkg.
Полный исходный код этого проекта может быть клонирован из следующего репозитория Git. Следующая команда клонирует репозиторий проекта:
$ git clone https://github.com/qboticslabs/ros_robotics_projects
Еще один пакет, который мы используем для передачи сообщений ROS Image между двумя узлами ROS, это image_transport (). Этот пакет всегда используется для подписки и публикации данных изображений в ROS. Пакет может помочь нам транспортировать изображения с низкой пропускной способностью, применяя методы сжатия. Этот пакет также устанавливается вместе с полной установкой ROS на рабочем столе.