diff --git a/docs/camera.md b/docs/camera.md index 62fe7764..cddf9ef9 100644 --- a/docs/camera.md +++ b/docs/camera.md @@ -12,12 +12,46 @@ sudo systemctl restart clever ``` -Для мониторинга изображения с камеры возможно использовать rqt или [web_video_server](/docs/web_video_server.md). +Для мониторинга изображения с камеры можно использовать rqt или [web_video_server](/docs/web_video_server.md). ## Компьютерное зрение -Для реализации алгоритмов компьютерного зрения рекомендуется использовать предустановленную на [образ SD-карты](/docs/microsd_images.md) библиотеку OpenCV. +Для реализации алгоритмов компьютерного зрения рекомендуется использовать предустановленную на [образ SD-карты](/docs/microsd_images.md) библиотеку [OpenCV](https://opencv.org). ### Python -Для обработки изображений с камеры в [OpenCV](https://opencv.org) в Python необходимо создать подписчика \ No newline at end of file +Основная статья: http://wiki.ros.org/cv_bridge/Tutorials/ConvertingBetweenROSImagesAndOpenCVImagesPython. + +Пример создания подписчика на топик с изображением с основной камеры для обрабоки с использованием OpenCV: + +```python +import rospy +import cv2 +from sensor_msgs.msg import Image +from cv_bridge import CvBridge + +rospy.init_node('computer_vision_sample') +bridge = CvBridge() + +def image_callback(self, data): + cv_image = self.bridge.imgmsg_to_cv2(data, 'bgr8') # OpenCV image + # Do any image processing with cv2... + +image_sub = rospy.Subscriber('main_camera/image_raw', Image, image_callback) + +rospy.spin() +``` + +Для отладки обработки изображения можно публиковать отдельный топик с обработанным изображением: + +```python +image_pub = rospy.Publisher('~debug', Image) +``` + +Публикация обработанного изображения (в конце функции image_callback): + +```python +image_pub.publish(bridge.cv2_to_imgmsg(cv_image, 'bgr8')) +``` + +Получаемые изображения можно просматривать используя [web_video_server](/docs/web_video_server.md).