1. 程式人生 > >ROS下入門程式設計C++(使用OpenCV)

ROS下入門程式設計C++(使用OpenCV)

" 你的人生 只有你才是主角 沒關係 你可以的 一定會很順利的。"

 

2018年12月5日

北平

ROS版本:ROS Kinetic Kame(2016)ROS與ubuntu版本的更新是保持同步的~

 

記錄下詳細的流程:

1.建立工作區catkin_ws/src

   mkdir -p catkin_ws/src

2. 進入目錄

   cd catkin_ws/src

3.建立一個名為test的程式包,並設定依賴當前已存在的包roscpp

   catkin_create_pkg test roscpp

4.進入程式包

   cd test/src

5.新建main.cpp

   subl main.cpp

   注:此處涉及到選用OpenCV版本的問題;因為ROS-Kinetic完全安裝中本身自帶了Opencv3.3.1,因此在ROS中可以直接用ROS自帶的Opencv3.3.1,但也可以使用自己Ubuntu中安裝的Opencv2.4.9,都是可以的,一會介紹方法。

  參考這3個部落格 :❶https://blog.csdn.net/u010284636/article/details/80071786

                              ❷

https://blog.csdn.net/bigdog_1027/article/details/79092263

                              ❸https://blog.csdn.net/chengde6896383/article/details/82423189

/*選用ROS自帶的OpenCV 3.3.1*/
#include <iostream>
#include <stdio.h>
#include <opencv-3.3.1-dev/opencv2/core.hpp>
#include <opencv-3.3.1-dev/opencv/highgui.h>
#include <opencv-3.3.1-dev/opencv2/opencv.hpp>

using namespace cv;

int main()
/*
argc為執行時輸入的引數數量,輸入一個引數時為2,
argv為,argv[0]指向輸入的程式路徑及名稱:/home/myname/Pictures/test.jpg
argv[1]指向第一個引數字串,即圖片
*/
{
    Mat image;
    image = imread("/home/zxkj/catkin_ws/src/test/src/test.jpg",1);
    if (image.empty())
    {
        printf("No image data \n");
        return -1;
    }
    namedWindow("Display Image", WINDOW_AUTOSIZE );
    imshow("Display Image", image);
    waitKey(0);
    return 0;
}

6.修改test程式包內的CMakeList.txt

cmake_minimum_required(VERSION 2.8.3)
project(test)
set(OpenCV_DIR /opt/ros/kinetic/share/OpenCV-3.3.1-dev)

find_package(catkin REQUIRED COMPONENTS
  roscpp
  OpenCV
)

include_directories(
  include
  ${catkin_INCLUDE_DIRS}
  ${OpenCV_INCLUDE_DIRS}
)

catkin_package(
)

add_executable(main src/main.cpp)

target_link_libraries(main
${catkin_LIBRARIES}
${OpenCV_LIBRARIES}
)

7. cd ..

8. catkin_make 

9. 更新/設定環境變數

   source devel/setup.bash

10.執行可執行程式

   rosrun test main

 

好嘞,就這樣~

我們依然年輕: