当前位置: 首页 > news >正文

随手笔记——将ROS图像话题转为OpenCV图像格式处理后再转为ROS图像话题发布(Python版)

随手笔记——将ROS图像话题转为OpenCV图像格式处理后再转为ROS图像话题发布(Python版)

  • 说明
  • 关键函数
  • 代码

说明

将ROS图像话题转为OpenCV图像格式处理后再转为ROS图像话题发布,主要通过CvBridge的cv2_to_imgmsg和imgmsg_to_cv2函数(Python版)。

关键函数

imgmsg_to_cv2将图像从ROS消息格式转换成OpenCV格式
cv2_to_imgmsg 将数据转成ROS消息格式

代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-import rospy
import cv2
from cv_bridge import CvBridge, CvBridgeError
from sensor_msgs.msg import Imageclass image_converter:def __init__(self):    # 创建cv_bridge,声明图像的发布者和订阅者self.image_pub = rospy.Publisher("cv_bridge_image", Image, queue_size=1)self.bridge = CvBridge()self.image_sub = rospy.Subscriber("/usb_cam/image_raw", Image, self.callback)def callback(self,data):# 使用cv_bridge将ROS的图像数据转换成OpenCV的图像格式try:cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")except CvBridgeError as e:print e# 在opencv的显示窗口中绘制一个圆,作为标记(rows,cols,channels) = cv_image.shapeif cols > 60 and rows > 60 :cv2.circle(cv_image, (60, 60), 30, (0,0,255), -1)# 显示Opencv格式的图像cv2.imshow("Image window", cv_image)cv2.waitKey(3)# 再将opencv格式额数据转换成ros image格式的数据发布try:self.image_pub.publish(self.bridge.cv2_to_imgmsg(cv_image, "bgr8"))except CvBridgeError as e:print eif __name__ == '__main__':try:# 初始化ros节点rospy.init_node("cv_bridge_test")rospy.loginfo("Starting cv_bridge_test node")image_converter()rospy.spin()except KeyboardInterrupt:print "Shutting down cv_bridge_test node."cv2.destroyAllWindows()

注:代码来自古月,如有侵权,请联系删除!

http://www.lryc.cn/news/94574.html

相关文章:

  • Win11系统如何安装Oracle数据库(超级详细)
  • 【代理服务器】Squid 反向代理与Nginx缓存代理
  • 目标检测之遮挡物体检测
  • Vim 命令大全
  • 【Visual Studio】printf() 函数无输出显示问题。使用 C++ 语言,配合 Qt 开发串口通信界面
  • Linux安装配置Oracle+plsql安装配置(详细)
  • 软件UI工程师的职责模板
  • 【Python】Selenium操作cookie实现免登录
  • 【数据结构与算法篇】之时间复杂度与空间复杂度
  • 硬件性能 - 网络瓶颈分析
  • stm32驱动MCP2515芯片,项目已通过测试
  • Nginx部署前后端分离项目
  • pytorch多分类问题 CrossEntropyLoss()函数的输入size/shape不一致问题
  • 硬盘或者U盘提示需要格式化的解决办法
  • Clip-Path
  • Matlab绘图系列教程-Matlab 34 种绘图函数示例(下)
  • 【Vue+Django】Training Management Platform Axios并发请求 - 20230703
  • smart Spring:自定义注解、拦截器的使用(更新中...)
  • php导出pdf
  • 【ECMAScript6_2】字符串
  • 37.RocketMQ之Broker消息存储源码分析
  • RabbitMq应用延时消息
  • 【WEB自动化测试】- 浏览器操作方法
  • VSCode设置鼠标滚轮滑动设置字体大小
  • Spring MVC是什么?详解它的组件、请求流程及注解
  • 基于Spring Boot的广告公司业务管理平台设计与实现(Java+spring boot+MySQL)
  • docker 基本命令安装流程
  • 尚硅谷大数据Flink1.17实战教程-笔记02【Flink部署】
  • 【LeetCode每日一题合集】2023.7.3-2023.7.9
  • java企业工程项目管理系统平台源码