Подглава 2.4.1 Интерфейс между ROS и OpenCV

Open Source Computer Vision (OpenCV) - это библиотека, в которой есть API для выполнения приложений компьютерного зрения. Проект был начат в Intel Russia, а позже его поддержали Willow Garage и Itseez. В 2016 году Itseez была приобретена Intel.

OpenCV website: harrow-up-righttarrow-up-righttarrow-up-rightparrow-up-right://oarrow-up-rightparrow-up-rightearrow-up-rightnarrow-up-rightcarrow-up-rightvarrow-up-right.arrow-up-rightoarrow-up-rightrarrow-up-rightgarrow-up-right/arrow-up-right

Willow Garage: harrow-up-righttarrow-up-righttarrow-up-rightparrow-up-right://warrow-up-rightwarrow-up-rightwarrow-up-right.arrow-up-rightwarrow-up-rightiarrow-up-rightlarrow-up-rightlarrow-up-rightoarrow-up-rightwarrow-up-rightgarrow-up-rightaarrow-up-rightrarrow-up-rightaarrow-up-rightgarrow-up-rightearrow-up-right.arrow-up-rightcarrow-up-rightoarrow-up-rightmarrow-up-right/arrow-up-right

Itseez: http://itseez.comarrow-up-right

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 в этом проекте:

Рисунок 14: роль cv_bridge

Здесь cv_bridge работает между узлом usb_cam и узлом отслеживания лица. Мы узнаем больше об узле отслеживания лица в следующем разделе. До этого будет хорошо, если вы получите представление о его работе.

Еще один пакет, который мы используем для передачи сообщений ROS Image между двумя узлами ROS, это image_transport (http://wiki.ros.org/image_transportarrow-up-right). Этот пакет всегда используется для подписки и публикации данных изображений в ROS. Пакет может помочь нам транспортировать изображения с низкой пропускной способностью, применяя методы сжатия. Этот пакет также устанавливается вместе с полной установкой ROS на рабочем столе.

Это все об OpenCV и интерфейсе ROS. В следующем разделе мы будем работать с первым пакетом этого проекта: face_tracker_pkg.

Полный исходный код этого проекта может быть клонирован из следующего репозитория Git. Следующая команда клонирует репозиторий проекта:

$ git clone https://github.com/qboticslabs/ros_robotics_projects

Last updated