ROS学习—opencv使用之图片传输

前提操作:ros已安装,opencv已安装。
首先在工作空间中新建一个功能包rosopencv

catkin_create_pkg rosopencv sensor_msgs cv_bridge roscpp std_msgs image_transport

编译一下catkin_make,新建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);//用之前声明的节点句柄初始化itimage_transport::Publisher pub = it.advertise("camera/image", 1);cv::Mat image = cv::imread("/home/ubuntu/Pictures/dog.jpg", CV_LOAD_IMAGE_COLOR);cv::Mat image1 = cv::imread("/home/ubuntu/Pictures/cat.jpg", CV_LOAD_IMAGE_COLOR);if(image.empty()||image1.empty()){printf("open error\n");}cv::imshow("",image);cv::waitKey(3000);//cv::imshow("",image1);//cv::waitKey(3000);cv::destroyWindow("");sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", image).toImageMsg();//图像格式转换//sensor_msgs::ImagePtr msg1 = cv_bridge::CvImage(std_msgs::Header(), "bgr8", image1).toImageMsg();ros::Rate loop_rate(1);//每秒1帧while (nh.ok()) {pub.publish(msg);//sleep(0.5);//pub.publish(msg1);ros::spinOnce();loop_rate.sleep();}
}

代码很简单,注释的几句是实现两张图片切换发送的功能,可以去除注释。
在CMake文件添加

find_package(OpenCV REQUIRED)#注意此处的REQUIRED,没有编译会报错
include_directories(${catkin_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS})
add_executable(rosopencv ./src/rosopencv.cpp)
target_link_libraries(rosopencv ${OpenCV_LIBS})
target_link_libraries(rosopencv ${catkin_LIBRARIES})

下面是接收的程序,新建接收功能包,并且接收的cmake文件修改与上述类似改之。
catkin_create_pkg recieve sensor_msgs cv_bridge roscpp std_msgs image_transport

#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <cv_bridge/cv_bridge.h>void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{cv::imshow("view", cv_bridge::toCvShare(msg, "bgr8")->image);cv::waitKey(400);
}int main(int argc, char **argv)
{ros::init(argc, argv, "image_listener");ros::NodeHandle nh;image_transport::ImageTransport it(nh);image_transport::Subscriber sub = it.subscribe("camera/image", 1, imageCallback);ros::spin();
}

效果,两张图片切换发送与显示

ROS学习—opencv使用之图片传输相关推荐

  1. ros学习(二) ros_visp传输文件

    话题发布: #include <ros/ros.h> #include <image_transport/image_transport.h> #include <cv_ ...

  2. qt 关闭窗口的槽函数_勇哥的VC++应用框架学习之QT(1) 信号槽、按钮控件、opencv读取显示图片...

    前言勇哥对于C语言,C++早些年有一些接触,这个系列贴子就记载一下C++应用框架的学习经验. 在写程序时,UI.基础类库.应用程序框架对于vc来讲,只能依靠MFC和QT了. 勇哥对MFC有很强的抵触, ...

  3. 使用Python调用opencv学习(-)打开图片,显示图片

    使用Python调用opencv学习(-)打开图片,显示图片 第一步是读取图片是用cv2.imread 第一个参数是图片的路径可以是绝对路径也可以是相对路径.第二个参数代表读取图片的格式 cv2.IM ...

  4. 学习OpenCV的学习笔记系列(三)显示图片及视频

    OpenCV是计算机视觉库,那么处理的对象无非两个:"图片"及"视频"(其实视频也是被解压成单帧图像来处理的,总的来说,还是处理图像). 那么要想学习OpenC ...

  5. 学习|OpenCV图片修复函数inpaint

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为2020字,预计阅读6分钟 OpenCV图片修复 最近重新学习OpenCV的基础,偶然间发现了npaint的函数,于是就自己做了 ...

  6. 【Qt+OpenCV项目开发学习】二、图片查看器应用程序开发

    一.前言 本博客将讲解如何用Qt+OpenCV开发一款图片查看器的Windows应用程序,其实不用OpenCV也能开发出这类软件,作者目的是为了学习Qt+OpenCV开发项目,所以会使用OpenCV, ...

  7. OpenCV学习笔记--第一个OpenCV程序:图片读写显示

    配置使用OpenCV库 在上节中我们已经生成了可用于VS2015或者QT5 with MinGW开发的OpenCV库,接下来我们写一个简单的程序测试一下. 因为我电脑上装了QT而没有装VS2015,所 ...

  8. 周末ROS学习沙龙第二期——自定义消息通信、视频传输、人脸检测、小车动手编程

    非博主原创,出于方便学习的目的,将周末ROS学习沙龙www.corvin.cn的课堂讲义PPT整理在这(老师讲得超棒!),无任何盈利目的,若有侵权则删除. Ros小课堂链接:https://space ...

  9. 2017年7月ROS学习资料小结

    <孙子兵法·谋攻篇>:"上兵伐谋,其次伐交,其次伐兵,其下攻城:攻城之法为不得已." 任何发生在自己国土上的战争,即便胜利,也饱含屈辱. ----~~~~----Gaz ...

最新文章

  1. java基本语句回文数实验_实验二 java基本数据类型与把持语句.doc
  2. [51nod1079]中国剩余定理
  3. weblogic 12C集群环境下的session复制
  4. JavaScript学习(三十四)—事件委托
  5. 循环智能杨植麟:“人机耦合”将是对话语义应用的新趋势!
  6. python辗转相除法最大公约数和最小公倍数_小灰算法(二): 可能是小学老师没教你的最大公约数算法...
  7. oracle系统AP对应的凭证编号,AP主要账户及会计分录
  8. 培训linux好吗,参加linux专业培训好还是自学linux好
  9. 山东大学高频电子线路综合实验 调幅通信机系统实验详解
  10. linux 如何进入bios设置密码,linux系统怎么不输入密码得到系统的BIOS...-卓优商学院问答...
  11. 二维数组指针表示,C语言指针引用二维数组详解
  12. VMware中Linux虚拟机root密码重置
  13. 前端的debug调试
  14. ATOM基础教程一ATOM按键绑定(6)
  15. Fixed Resistors
  16. mvcnn代码详解_使用colab运行tensorflow版本的faster-rcnn
  17. vuepress-theme-reco 博客主题使用
  18. DP分类题目 转载 《志当存高远》大神的 没有冒犯的意思 只是拿过来学习的
  19. Spring RMI反序列化漏洞分析
  20. STM32c8t6Flash地址空间的数据读取

热门文章

  1. SpringBoot2 整合MinIO中间件,实现文件便捷管理
  2. 【Python】mayavi小结
  3. Hibernate 入门----第一个Hibernate应用程序
  4. hadoop--HDFS的Shell相关操作
  5. 《运营之光》《策略产品经理》《推荐系统实践》读书笔记随笔
  6. python设计模式总结
  7. UPS不间断电源的种类有哪些 常见的3类UPS电源
  8. [React-Native]样式和布局
  9. 组策略对应于注册表位置汇总
  10. 正则表达式 匹配中文,英文字母和数字及_的写法!同时控制长度