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

2.ROS机器视觉——ROS图像(imgmsg)与opencv(cv2)对接 ROS机器视觉——ROS图像(imgmsg)与opencv(cv2)对接 阅读详情

随手笔记——将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 Image

class 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.shape
        if 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 e

if __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()

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

【ROS2&AI】电脑摄像头、intel-D435,利用ros2发布订阅图像(Python) 配置:Python、ROS2、opencv、Ubuntu。利用电脑相机或D435相机联合ROS2进行图像的发布与订阅。与传统的传输列表、字符串msg不同(定义消息类型直接发送即可),利用ros2传输图像需要把图像frame转为image类型的msg。流程如下:opencv或者realsense获取得到的图像(frame)--> np.array --> msg消息类型(利用CvBridge) 阅读详情

相关推荐

【OpenCV学习】 《OpenCV3编程入门》--毛星云 01 邂逅OpenCV(OpenCV基本概念与基本架构)& ROS系统上的运用(python实现)

《OpenCV3编程入门》第一章的学习笔记,包含OpenCV的概念与基本架构。在ROS noetic中实现图像的读取显示,图像腐蚀,blur图像模糊,canny图像边缘检测与获取摄像机中的图像并进行canny边缘检测。

Howe_xixi的博客 2081

ROS图像格式和opencv图像格式的转换cv2_to_imgmsg和imgmsg_to_cv2

一图看懂 比比一些叙述 我们在使用ROS作控制任务时,一般是是需要甬道视觉控制的。或者说单独用ROS部署一些视觉模块。 这个个时候我们一般会以来opencv工具来实现一个功能,或者基础图像处理功能,比如提取图像尺寸,灰度转换之类的。 ROS个的数据格式和opencv的个是不同,ROS在传输图像时需要使用专门的数据个时进行传输,比如订阅摄像头采集的数据,传过来就是ROS格式的数据,这个时候并不适合Opencv直接处理。因此我们需要使用imgmsg_to_cv2将图像从ROS信息格式转换成cv格式。当ROS处理

qq_33328642的博客 1万+

计算机视觉库OpenCV和ROS[Python]

计算机视觉库OpenCV和ROS[Python] 我们在这里真正感兴趣的是相机拍摄的RGB图像,因此本周我们将使用的关键主题是: 1.使用一系列ROS工具来查询ROS网络上的摄像头图像主题,并查看流式传输给他们的图像。 2.使用计算机视觉库OpenCV和ROS,获取相机图像并实时处理。 3.应用过滤过程来隔离图像中感兴趣的对象。 4.开发目标检测节点,并利用这些过程产生的信息来控制机器人的位置。 5.使用摄像头数据作为反馈信号,通过比例控制实现线路跟随行为。 对此运行rostopic info以识别消息类型

kirsten111111的博客 8209

opencv函数学习(python)

    最近在看胡春旭老师的<ROS机器人开发实践>,第七章讲机器视觉,于是跟随胡老师的代码写了一遍.接下来我就把整理的在这一章学习的有关opencv的几个函数分享出来    1. CvBridge(): 这是一个在opencv图像和ros图像消息之间转换的对象    2. imgmsg_to_cv2()和cv2_to_imgmsg():这两个函数一个是将sensor_msgs/Ima...

dzhongjie的博客 1714

ROS机械臂——ROS结合OpenCV案例(含资源)

ROS+OpenCV案例学习笔记

Vodka的博客 1840

抖音最新风控体系研究

小编从技术角度对抖音的风控史和落地目标,跟大家聊一聊抖音,包括海外版抖音TikTok的现状与生态。 1、非常非常早的时期,抖音刚出来的时候,没有任何封禁,这个阶段,导入一个开发库,加上一个请求头,咵咵咵的数据随便拿。 2、2018-2019年,抖音加入了设备id和xg机制,在绝大多数的接口中,携带了设备id参数,同时在请求头中加入了xg,如今的apk市场,能追溯到的最早xg是0200打头的,而小编见过的最早的xg是0000打头的。这个时期的接口,这些参数都还只是预设,没有实际的用处,设备随便写,

qq517348412的博客 1万+

在ROS中用openCV显示摄像头并发布图像数据

在ROS中用openCV显示摄像头并发布图像数据前言使用C++实现使用python实现ROS使用openCV进行图片接收,并显示 前言 自己也是刚开始学习ros和openCV,经常会踩很多坑,比如这次在ros中使用openCV,按照很多博客写的,最后要么死机,要么黑框。对此,经过请教学长,终于调通,分享给大家以供参考。 使用C++实现 #include <iostream> #include <ros/ros.h> #include <cv_bridge/cv_bridge.h

qq_35616298的博客 3997

Mac 环境配置jdk、Maven

3、终端打开配置jdk时候建好的脚本文件: open -e .bash_profile。4、查看maven是否安装成功和系统能不能识别maven/mvn命令:⬇️。输入⬇️并保存: 其中第一行JAVA_HOME替换为自己下的jdk路径。,安装编译好的二进制版本,具体安装zip还是tar.gz我看的。5、查看jdk是否安装成功和系统能不能识别java命令:⬇️。至此,我的Mac系统的环境配置jdk、Maven完成!然后就发现我的maven命令还是没作用,不识别,下载后直接安装即可,很快,点几下就OK了。

weixin_42416791的博客 4397

Llinux+ROS+OpenCV开发环境配置笔记

这个笔记总结了在Linux上配置摄像头、OpenCV和ROS时遇到的一些问题和解决方案。

Raymond Kwan 8637

MIPI信号的分析--结合示波器实际测试波形

如果排查的思路对你有帮助,请记住 消雨匆匆 or 大吊工。码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的。 部分内容来自于此博客的大神总结: http://www.elecfans.com/news/wangluo/20170323499614.html http://www.elecfans.com/yuanqijian/jieko...

消雨匆匆 4万+

Allegro规则管理器实战:5步搞定Xnet等长组设置(含Relative Propagation Delay配置)

本文详细介绍了在Cadence Allegro规则管理器中,通过5个实战步骤高效设置Xnet等长组的方法。核心内容包括创建Xnet属性、定义引脚对、建立匹配组,并重点讲解了Relative Propagation Delay规则的配置与应用,帮助PCB设计师确保高速信号时序对齐,提升系统稳定性与性能。

weixin_29193259的博客 517

相机发布的ros话题转换为opencv图像

核心原理是订阅相机发布的ros话题进入回调函数,在回调函数中进行转换,即ros话题转换为cv_bridge,再转换为opencv图像 ros中图像格式 sensor_msgs::ImageConstPtr cv_bridge图像格式 cv_bridge::CvImagePtr opencv图像格式 cv::Mat 代码为 test2.cpp #include <ros/ros.h> #include <cv_bridge/cv_bridge.h> #include <senso

小王子的博客 1205

ChatGPT Plus完整开通指南:从账号注册到稳定使用全流程

自然语言处理(NLP)技术通过深度学习模型实现对人类语言的理解与生成,其核心原理是基于Transformer架构的大规模预训练。GPT-4作为当前最先进的生成式AI模型,在代码编写、文档分析等场景展现出显著的技术价值。在实际应用中,稳定的网络环境和合规的支付方式是确保AI助手持续服务的关键因素。针对ChatGPT Plus的开通,需要系统性地解决账号验证、虚拟信用卡支付等工程实践问题,才能实现工作流的高效整合。

weixin_34239592的博客 427

将ROS2的图像话题转成视频流在浏览器中显示

ROS2: 机器人操作系统的新版本,用于管理和处理节点间的通信。Python: 使用Python编程语言进行脚本编写和后端逻辑实现。Flask: 一个轻量级的Python web框架,用于搭建web服务器。OpenCV: 开源计算机视觉库,用于图像处理。cv_bridge: 在ROS和OpenCV间转换图像数据的接口。

生活不止眼前的苟且 1746

智慧园区——解读零碳智慧园区全域双碳管理建设方案【附全文阅读】

《零碳智慧园区全域双碳管理建设方案》为园区开发运营企业、政府部门及绿色能源服务商等提供系统性指导。方案基于"背景-理念-路径"框架,首先分析全球双碳趋势及我国园区高碳排放现状,明确零碳园区价值;其次提出"数字+绿色"双动力理念,构建数字底座与绿色能源体系;最后详细规划实施路径,包括碳排查、绿能规划、能效优化、碳交易等全流程管理,结合数字孪生技术实现可视化管控,助力园区实现碳中和目标。

cdfunlove的博客 206

基于Gurobi的综合能源系统运行优化:鲁棒两阶段优化方法

本文提出了一种基于Gurobi的综合能源系统鲁棒两阶段优化方法,针对包含换电站、光伏发电和电池储能的系统运行问题。研究采用多面体不确定性集合描述光伏出力随机性,构建了考虑电池衰减成本和弃光惩罚的两阶段优化模型:第一阶段制定日前调度计划,第二阶段处理实时运行中的不确定性。通过列与约束生成算法求解模型,并使用Python和Gurobi实现。仿真验证了该方法能有效平衡系统经济性与鲁棒性,为含高比例可再生能源的综合能源系统运行提供了实用解决方案。

huanghm88的专栏 242

ROS 加载kitti数据集图片发布图片话题,并用rivz显示出来

用ros加载一组图片,发布图片话题,并用rviz显示出来

AI Chen的博客 1984

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ROS——C++与Python3的图像节点基于OpenCV相互发送和接收

文章目录C++与Python相互传输的数据格式读取摄像头并发布Python读取摄像头C++读取摄像头接收节点Python接收图像C++接收图像 C++与Python相互传输的数据格式 基于ROS利用客户端和服务端实现C++节点和python节点间传送图像的数据格式 读取摄像头并发布 Python读取摄像头 #!/usr/bin/env python3 # coding:utf-8 import cv2 import numpy as np import rospy from std_msgs.msg

Irving.Gao的博客 5633

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

ROS-机器视觉 ②:OpenCV库的安装和简单论证

OpenCV库(Open Source Computer Vision Library)是一个基于BSD许可发行的跨平台开源计算机视觉库,可以运行在Linux、Windows和mac OS等操作系统上。OpenCV由一系列C函数和少量C++类构成,同时提供C++、Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法,而且对非商业应用和商业应用都是免费的。同...

weixin_44827364的博客 2191

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

ROS 发布和订阅图片

文章目录发布和订阅 image打开摄像头发布图片订阅图片cv_bridge 发布和订阅 image 打开摄像头 cap = cv2.VideoCapture("/dev/video0") cap.set(3, 640)#weight cap.set(4, 480)#height ret, frame = cap.read() # frame = cv2.flip(frame, 0) ##图像上下颠倒 发布图片 image_pub = rospy.Publisher('/image', Image,qu

gezongbo的博客 6719

ROS2之OpenCV基础代码对比foxy~galactic~humble

参考:推荐使用:YOLOX + ROS2 object detection package也可以参考:github.com/jeffreyttc/opencv_ros2vision_opencv ros2 vision_opencv 包含将 ROS 2 与 OpenCV 接口的包,OpenCV 是一个专为计算效率和实时计算机视觉应用程序而设计的库。 该存储库包含:为了将 ROS 2 与 OpenCV 一起使用,请参阅 cv_bridge 包中的详细信息。程序适用于foxy/galactic/humb...

zhangrelay的专栏 3717

译:ROS和Openv之间的图像转换(Python)

描述:本教程介绍如何使用cv_bridge将ROS图像转换为OpenCV图像,反之亦然,从而实现ROS和OpenCV的交互。 包括一个示例节点,可用作您自己节点的模板。1.概念    ROS以其自己的sensor_msgs/Image消息格式发布图像,但许多用户会希望将图像与OpenCV结合使用。 CvBridge是一个ROS库,提供ROS和OpenCV之间的接口。 可以在vision_openc...

weixin_40863346的博客 2万+

用Python脚本自动保存乐视相机(LeTMC-520)的RGB和深度图:ROS话题订阅与OpenCV图像处理详解

本文详细介绍了如何使用Python脚本在ROS环境下自动保存乐视TMC-520相机的RGB和深度图。通过订阅`/camera/color/image_raw`和`/camera/depth/image_raw`话题,结合OpenCV图像处理技术,实现高效数据捕获与保存,适用于SLAM、三维重建等机器人视觉应用。

weixin_33672400的博客 302

ROS OpenCV库 示例

OpenCV库(Open Source Computer VisionLibrary)是一个基于BSD许可发行的跨平台开源计算机视觉库,可以运行在Linux、Windows和mac OS等操作系统上。OpenCV由一系列C函数和少量C++类构成,同时提供C++、Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法,而且对非商业应用和商业应用都是免费的。同时OpenCV可以直接访问硬件摄像头,并且还提供一个简单的GUI系统——highgui。

小海聊智造 681

ROS新手避坑指南:用Python3脚本高效提取bag文件中的图片(带时间戳命名)

本文详细介绍了如何使用Python3脚本从ROS bag文件中高效提取带时间戳的图片,解决了传统Python2方案的兼容性问题。通过完整的代码示例和实用技巧,帮助开发者实现无损图像提取、时间戳精确命名及性能优化,适用于机器人视觉数据处理等场景。

weixin_28732953的博客 397
上一篇: 随手笔记——ROS摄像头标定以及标定文件配置
下一篇: 随手笔记——将ROS图像话题转为OpenCV图像格式处理后再转为ROS图像话题发布(C++版)
JANGHIGH
博客等级 码龄16年 1万+粉丝 315原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值