查看: 2559|回复: 0

角蜂鸟AI视觉套件:(四)ROS下订阅并处理图像

[复制链接]
  • TA的每日心情

    2018-11-20 13:41
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2019-3-5 15:07:07 | 显示全部楼层 |阅读模式
    分享到:
    对于熟悉ROS的朋友们来说,图像的topic有了,我们就可以开始自己想干的事情了。这里我创建一个名为hs_image_sub的package来处理角蜂鸟的图像,图像的topic 名字为上一篇提到的:/hs/camera/image_raw. 也是我们打开rqt_image_view窗口看到的东西。

    这篇博客主要是利用opencv来获取角蜂鸟图像,然后做一个阈值处理,并且打开窗口显示原图和处理后的图像。有了opencv想做什么处理都可以了,这篇文章主要是教大家在ROS里获取并调用图像。
    1. cd ~/catkin_ws/src

    2. catkin_create_pkg hs_image_sub roscpp sensor_msgs cv_bridge
    复制代码
    然后
    1. cd ~/catkin_ws/src/hs_image_sub/src

    2. touch hs_image_sub_node.cpp

    3. gedit hs_image_sub_node.cpp
    复制代码
    填入以下代码
    1. #include <ros/ros.h>
    2. #include <sensor_msgs/Image.h>
    3. #include <sensor_msgs/image_encodings.h>
    4. #include <image_transport/image_transport.h>
    5. #include <cv_bridge/cv_bridge.h>

    6. // OpenCV
    7. #include <opencv2/opencv.hpp>
    8. #include <opencv2/imgproc/imgproc.hpp>
    9. #include <opencv2/highgui/highgui.hpp>

    10. using namespace std;
    11. using namespace cv;

    12. const string Original_winName = "Original Image";
    13. const string Thresh_winName = "Threshed Image";

    14. Mat cameraFeed;
    15. Mat HSV;
    16. Mat threshold_ori;

    17. void rgbCallback(const sensor_msgs::ImageConstPtr& msg)
    18. {
    19.     cv_bridge::CvImageConstPtr cv_ptr;
    20.     try
    21.     {
    22.         cv_ptr = cv_bridge::toCvCopy(msg, sensor_msgs::image_encodings::BGR8); // Caution the type here.
    23.     }
    24.     catch (cv_bridge::Exception& ex)
    25.     {
    26.         ROS_ERROR("cv_bridge exception in rgbcallback: %s", ex.what());
    27.         exit(-1);
    28.     }


    29.     cameraFeed = cv_ptr->image.clone();

    30.     cvtColor(cameraFeed,HSV,COLOR_BGR2HSV);
    31.     inRange(HSV,Scalar(0,133,0),Scalar(21,256,256),threshold_ori);
    32.    

    33.     //show frames
    34.     imshow(Original_winName,cameraFeed);
    35.     imshow(Thresh_winName,threshold_ori);

    36.     //delay 10ms so that screen can refresh.
    37.     //image will not appear without this waitKey() command
    38.     waitKey(10);

    39. }


    40. int main(int argc, char *argv[])
    41. {
    42.     ros::init(argc, argv, "HornedSungemGrabber");

    43.     ros::NodeHandle n;

    44. //        topic name of HornedSungem
    45.     ros::Subscriber rgb_sub = n.subscribe("/hs/camera/image_raw", 1, rgbCallback);
    46.     ROS_INFO("Subscribe to the HS color image topic.");

    47.     ros::spin();
    48.     return 0;
    49. }
    复制代码

    代码比较简单,主要是订阅图像源,调用回调函数做阈值处理。

    注意这里的topic name 和回调函数里的格式:BGR8,只能是这个。

    1.png

    保存,然后

    cd ~/catkin_ws/src/hs_image_sub/

    gedit CMakeLists.txt

    全选,替换为以下内容

    1. cmake_minimum_required(VERSION 2.8.3)
    2. project(hs_image_sub)

    3. find_package(OpenCV REQUIRED)

    4. find_package(catkin REQUIRED COMPONENTS
    5.   cv_bridge
    6.   roscpp
    7.   sensor_msgs
    8. )


    9. catkin_package(
    10. #  INCLUDE_DIRS include
    11. #  LIBRARIES hs_image_sub
    12. #  CATKIN_DEPENDS cv_bridge roscpp sensor_msgs
    13. #  DEPENDS system_lib
    14. )


    15. include_directories(
    16. # include
    17.   ${catkin_INCLUDE_DIRS}
    18. )

    19. add_executable(${PROJECT_NAME}_node src/hs_image_sub_node.cpp)


    20. target_link_libraries(${PROJECT_NAME}_node
    21.    ${catkin_LIBRARIES} ${OpenCV_LIBS}
    22. )
    复制代码
    接着编译
    1. cd ~/catkin_ws

    2. catkin_make
    复制代码
    2.png
    看到编译成功,运行角蜂鸟ROS的官方程序,启动相机发布图像源,来供我们这里的程序调用
    1. roslaunch horned_sungem_launch hs_camera.launch cnn_type:=googlenet camera:=hs pixels:=360
    2. rosrun hs_image_sub hs_image_sub_node
    复制代码
    3.png
    有了opencv想做什么处理都可以了比如追踪
    4.gif

    ---------------------
    作者:yaked
    来源:CSDN

    相关文章阅读
    (一)开箱及软件开发环境配置
    (二)人工智能深度体验
    (三)ROS案例
    (四)ROS下订阅并处理图像
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 20:40 , Processed in 0.121590 second(s), 16 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.