ROS使用OpenCV读取图像并发布图像消息在rviz中显示

2023-05-16

思路: 
(1)使用opencv读取本地图像 
(2)调用cv_bridge::CvImage().toImageMsg()将本地图像发送给rviz显示

1.使用opencv读取本地图像并发布图像消息
(1)利用catkin新建一个工程叫rosopencv,并进行初始化

 mkdir -p rosopencv/src
 cd rosopencv/src
 catkin_create_pkg rosopencv sensor_msgs cv_bridge roscpp std_msgs image_transport
 cd ..
 catkin_make
 source ./devel/setup.bash


(2)编辑主函数代码 
主函数rosopencv.cpp内容如下

#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <cv_bridge/cv_bridge.h>

#include <stdio.h>

int main(int argc, char** argv)
{
  ros::init(argc, argv, "image_publisher");
  ros::NodeHandle nh;
  image_transport::ImageTransport it(nh);
  image_transport::Publisher pub = it.advertise("camera/image", 1);

  cv::Mat image = cv::imread("/home/topeet/test.jpg", CV_LOAD_IMAGE_COLOR);
  if(image.empty()){
   printf("open error\n");
   }
  sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", image).toImageMsg();

  ros::Rate loop_rate(5);
  while (nh.ok()) {
    pub.publish(msg);
    ros::spinOnce();
    loop_rate.sleep();
  }
}



(3)编辑CmakeLists.txt 

set(OpenCV_DIR /usr/local/share/OpenCV)
message(STATUS "version: ${OpenCV_VERSION}")
find_package(OpenCV REQUIRED)
add_executable(rosopencv src/rosopencv.cpp)
include_directories(${OpenCV_INCLUDE_DIRS})
target_link_libraries(rosopencv ${OpenCV_LIBS})
target_link_libraries(rosopencv ${catkin_LIBRARIES})


2编译和运行
编译

cd ~/dev/workspace/rosopencv
catkin_make


运行

rosrun rosopencv rosopencv 


输入

rostopic echo /camera/image


全是数字。

3.在rviz 中显示

rosrun rviz rviz


左边点击add 
选中image 
在image的topic选项中选 
/camera/image


--------------------- 
作者:沧海飞帆 
来源:CSDN 
原文:https://blog.csdn.net/ktigerhero3/article/details/70157582 
版权声明:本文为博主原创文章,转载请附上博文链接!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS使用OpenCV读取图像并发布图像消息在rviz中显示 的相关文章

  • 为什么这些双精度数的返回值为-1.#IND?

    I have double score cvMatchContourTrees CT1 CT2 CV CONTOUR TREES MATCH I1 0 0 cout lt
  • 如何在Python中使用tcp套接字发送和接收网络摄像头流?

    我正在尝试重新创建这个项目 https github com hamuchiwa AutoRCCar 我拥有的是服务器 我的电脑 和客户端 我的树莓派 我所做的与原始项目不同的是我尝试使用一个简单的网络摄像头而不是树莓派摄像头将图像从我的
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 如何设置K-means openCV c++的初始中心

    我正在尝试使用 OpenCv 和 Kmeans 对图像进行分割 我刚刚实现的代码如下 include opencv2 objdetect objdetect hpp include opencv2 highgui highgui hpp i
  • 安装 ROS 时 Cmake 未检测到 boost-python

    我一直在尝试在我的 Mac 上安装 ROS 并根据不同版本的 boost 使用不同的库解决了错误 然而 似乎有一个库甚至没有检测到 boost python 这是我得到的错误 CMake Error at usr local share c
  • OpenCV 仅围绕大轮廓绘制矩形?

    第一次发帖 希望我以正确的方式放置代码 我正在尝试检测和计算视频中的车辆 因此 如果您查看下面的代码 我会在阈值处理和膨胀后找到图像的轮廓 然后我使用 drawContours 和矩形在检测到的轮廓周围绘制一个框 我试图在 drawCont
  • 指纹奇异点检测

    我正在尝试确定指纹的核心点和增量点 我正在使用庞加莱指数方法 但我无法成功检测到这一点 而且我不明白为什么 First I divide the image in 15x15 blocks then I calculate the x an
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • OpenCV 2.3 与 VS 2008 - 鼠标事件

    强制性 我是新手 有一份涉及编程的工作 并且我一边工作一边自学 不用说 作为一名老师 我经常犯彻底的错误 我现在所处的位置 我创建了 Graph 类 它 令人惊讶的是 制作了图表 但现在我想通过单击鼠标来修改图形 但我似乎无法让鼠标处理程序
  • 仅获取图像中的外部轮廓

    我有这段代码 可以在图像中绘制轮廓 但我只需要外部轮廓 import cv2 import numpy as np camino C Users Usuario Documents Deteccion de Objetos 123 jpg
  • 创建 OpenCV 的 mouseCallback 函数的基于类的实现时遇到问题

    正如标题所示 我在基于类的 C 结构中实现 OpenCV 的 mouseCallback 函数时遇到了一些麻烦 请允许我解释一下 我定义了一个名为 BriskMatching 的类 在其中创建了一个名为 mouseCallback 的成员函
  • ffmpeg AVFrame 到 opencv Mat 转换

    我目前正在开发一个使用 ffmpeg 解码接收到的帧的项目 解码后 我想将 AVFrame 转换为 opencv Mat 帧 以便我可以在 imShow 函数上播放它 我拥有的是字节流 我将其读入缓冲区 解码为 AVFrame f fope
  • 如何去除给定图像中的噪声,使 ocr 输出完美?

    我已经对这个孟加拉文本图像进行了大津阈值处理 并使用 tesseract 进行 OCR 但输出非常糟糕 我应该应用什么预处理来消除噪音 我也想校正图像 因为它有轻微的倾斜 我的代码如下 import tesserocr from PIL i
  • 如何确定与视频中物体的距离?

    我有一个从行驶中的车辆前面录制的视频文件 我将使用 OpenCV 进行对象检测和识别 但我停留在一方面 如何确定距已识别物体的距离 我可以知道我当前的速度和现实世界的 GPS 位置 但仅此而已 我无法对我正在跟踪的对象做出任何假设 我计划用
  • 如何绘制更大的边界框和仅裁剪边界框文本 Python Opencv

    我正在使用 easyocr 来检测图像中的文本 该方法给出输出边界框 输入图像如下所示 Image 1 Image 2 使用下面的代码获得输出图像 But I want to draw a Single Bigger bounding bo
  • cv2.drawContours() - 取消填充字符内的圆圈(Python,OpenCV)

    根据 Silencer的建议 我使用了他发布的代码here https stackoverflow com questions 48244328 copy shape to blank canvas opencv python 482465
  • 如何在Windows上安装机器人操作系统ROSJava?

    ROS 的文档很糟糕 一个很大的讽刺是 ROS 的 Groovy 和 ROSJava 版本的创建是为了让 Windows 等平台上的开发人员能够利用出色的机器人 SDK 而所有安装说明仍然面向 Linux ubuntu 用户 The ROS
  • cv2.VideoWriter:请求一个元组作为 Size 参数,然后拒绝它

    我正在使用 OpenCV 4 0 和 Python 3 7 创建延时视频 构造 VideoWriter 对象时 文档表示 Size 参数应该是一个元组 当我给它一个元组时 它拒绝它 当我尝试用其他东西替换它时 它不会接受它 因为它说参数不是
  • 是否可以在 PyScript 中使用 OpenCV 模块?

    我想使用 opencv 模块 但无法导入 OpenCV 那么我该如何解决这个问题呢 顺便说一句 Pyodide 支持 OpenCV 示例代码 https i stack imgur com ahwex jpg 尚不支持 OpenCV 此时O
  • 在 Visual Studio C++ 2008 中包含 dll

    有没有办法将 dll 包含在项目中 这样我就不必在编译后将这些 dll 与可执行文件放在同一文件夹中 这样我就可以用它们编译我的项目 这是否有可能 如果是 有人可以指导我 我的项目是一个 opencv 项目 有很多 dll 我必须包含在文件

随机推荐

  • PLC前途如何,大学生能学吗,不要指望学会PLC就能月薪15000

    我这里没有鸡汤也没有鸭汤 xff0c 都是实在大白话 xff0c 技术出身的人大概都有点固执 xff0c 但是很务实 xff0c 总是认为只要把技术掌握了学好了 xff0c 就能拿到理想的工资 但是这句话也不能说没道理 xff0c 任何事物
  • 给自动化专业的大学生的终极警钟,单片机、PLC、嵌入式等方向哪个才是香饽饽?

    从面向工资的角度来说 xff0c 假设你不升学历的话 xff0c 推荐优先选择序列如下 xff1a 1 嵌入式 xff08 ARM 43 Linux xff09 xff1a 可对接工业机器人 物联网 高端3C产品设计 xff0c 但要去补课
  • STM32F1和STM32F4这两个系列都是单片机达人的心头好,到底那个好

    STM32F1和STM32F4这两个系列都是单片机达人的心头好 xff0c 到底那个好呢 大家都知道GD32是国内开发的一款单片机 xff0c 能够说是国货之光 xff0c 据说开发的人员是来自ST公司的 xff0c GD32也是以STM3
  • 嵌入式老师傅告诉你单片机6年想转嵌入式Linux值不值得

    嵌入式老师傅告诉你单片机6年想转嵌入式Linux值不值得 一 你真的决定要转嵌入式Linux吗 xff1f 要不要从单片机转嵌入式Linux是一个影响到职业开展的严肃决策 xff0c 我不能帮你拿主见 xff0c 只能帮你列出利弊 xff0
  • STM32收入高也好找工作,所以我学嵌入式linux终究是错付了吗

    STM32收入高也好找工作 xff0c 所以我学嵌入式linux终究是错付了吗 经常有同学纠结问我 xff1a 我到底是学STM32还是学嵌入式linux 这个问题很多人都会有自己的看法 xff0c 今天我试着从多个角度 xff0c 把了解
  • linux下close无法关闭socket

    由于close之后阻塞的recv出现不能立即返回关闭 xff0c socket进入被动一方 这种情况多数是创建和关闭处于不同的线程 解决办法在调用close函数之前先调用shutdown socket SHUT RDWR 函数
  • FPGA是什么呢,通透讲解单片机和FPGA的区别

    FPGA是什么呢 xff0c 通透讲解单片机和FPGA的区别 插播一条 xff1a 我自己在今年年初录制了一套还比较系统的入门单片机教程 xff0c 想要的同学找我拿就行了免費的 xff0c 私信我就可以哦 点我头像黑色字体加我地球呺也能领
  • 摊牌了我后悔入行了,浅谈为何不该入行嵌入式

    摊牌了我后悔入行了 xff0c 浅谈为何不该入行嵌入式 插播一条 xff1a 我自己在今年年初录制了一套还比较系统的入门单片机教程 xff0c 想要的同学找我拿就行了免費的 xff08 禾厶 亻言 手戈 xff09 最近比较闲 xff0c
  • 关于嵌入式Linux做底层还是应用,要掌握什么技能

    关于嵌入式Linux做底层还是应用 xff0c 要掌握什么技能 插播一条 xff1a 我自己在今年年初录制了一套还比较系统的入门单片机教程 xff0c 想要的同学找我拿就行了免費的 xff08 禾厶 亻言 手戈 xff09 最近比较闲 xf
  • c语言必背的100代码

    c语言必背的100代码 插播一条 xff1a 自己在今年整理一套单片机单片机相关论文800余篇 论文制作思维导图 原理图 43 源代码 43 开题报告 43 正文 43 外文资料 想要的同学私信找我 我记得刚开始接触编程的时候 xff0c
  • 51单片机简介

    51单片机简介 插播一条 xff1a 文章末尾有惊喜哟 一 51单片机标识信息 通常我们所说的51单片机是指以51内核扩展出的单片机 出产51单片机的厂商很多 xff0c 51单片机的型号也很多 下表列出了一些51单片机的厂商和型号 以上提
  • 都2022年了,互联网与嵌入式怎么选?

    都2022年了 xff0c 互联网与嵌入式怎么选 xff1f 2022届应届毕业生前来作答一波 大家找工作最关心的还是薪资待遇问题 从今年的校招情况来看 xff0c 互联网中的算法岗是要高于嵌入式的 xff0c 而开发岗整体和嵌入式持平 从
  • 做工程师还是转型做产品经理?

    做工程师还是转型做产品经理 xff1f 其实在国内互联网萌芽之初 xff0c 技术 产品 设计 运营职位其实区分的不是特别明显 xff0c 往往是一人身兼多职 xff0c 但随着行业的成熟 xff0c 这些职位之间的分工才逐渐细化 xff1
  • 为什么游戏里的都是伪随机,做不出真随机?

    为什么游戏里的都是伪随机 xff0c 做不出真随机 xff1f 希望来个简单易懂的解释 xff1f 我发现像LOL这些游戏 xff0c 暴击机制都是伪随机的 xff0c 前面几下没暴击 xff0c 后面暴击几率很大概率 像王者荣耀更为明显
  • 高学历毕业生,该学单片机还是plc?

    高学历毕业生 xff0c 该学单片机还是plc xff1f 研究生阶段 xff0c 使用欧姆龙和西门子的PLC做过一些商用的项目 xff0c 但是在课题研究过程中因为偏向于控制算法的落地实现 xff08 借助SOC 43 FPGA xff0
  • 无人机飞控平台ArduPilot源码入门教程 - 首页

    原文链接 简介 ArduPilot代码库有点大 核心的ardupilot git树大概有70万行代码 对新人来说这有点吓人 这个文档打算给出一点建议 关于如何快速上手相关代码 我们假设你熟悉C 43 43 的关键概念 另外好多例子都是假设你
  • C++ 常见面试和笔试坑点总结(持续更新)

    题目一 xff1a 下面的程序是执行if还是else span class hljs keyword int span a 61 span class hljs number 2 span span class hljs keyword i
  • 速腾聚创32线雷达雷达,RVIZ显示激光点云

    1 下载驱动文件 ahren 64 ahren ld ws src git clone https github com RoboSense LiDAR ros rslidar 2 在工作空间ld ws目录下编译 ahren 64 ahre
  • Attitude Control (Copter Code Overview)

    Attitude Control Copter Code Overview Between AC3 1 5 and AC 3 2 the attitude control logic was restructured as part of
  • ROS使用OpenCV读取图像并发布图像消息在rviz中显示

    思路 xff1a xff08 1 xff09 使用opencv读取本地图像 xff08 2 xff09 调用cv bridge CvImage xff08 xff09 toImageMsg 将本地图像发送给rviz显示 1 使用opencv