天天看點

ROS(indigo) opencv3.4.4 C++圖檔輸出

多次測試後終于可以用哦。

軟體:ubuntu14.04 單獨編譯的opencv3.4.4 indigo

記錄下詳細的流程:

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

  1. /*選用ROS自帶的OpenCV 3.3.1*/
  2. #include <iostream>
  3. #include <stdio.h>
  4. #include <opencv2/core.hpp>
  5. #include <opencv/highgui.h>
  6. #include <opencv2/opencv.hpp>
  7. using namespace cv;
  8. int main()
  9. /*
  10. argc為運作時輸入的參數數量,輸入一個參數時為2,
  11. argv為,argv[0]指向輸入的程式路徑及名稱:/home/pengpeng/1.jpg
  12. argv[1]指向第一個參數字元串,即圖檔
  13. */
  14. {
  15. Mat image;
  16. image = imread( "/home/zxkj/catkin_ws/src/test/src/test.jpg", );
  17. if (image.empty())
  18. {
  19. printf( "No image data \n");
  20. return ;
  21. }
  22. namedWindow( "Display Image", WINDOW_AUTOSIZE );
  23. imshow( "Display Image", image);
  24. waitKey( );
  25. return ;
  26. }

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

  1. cmake_minimum_required(VERSION 2.8.3)
  2. project(test)
  3. set(OpenCV_DIR /opt/ros/kinetic/ share/OpenCV -dev)
  4. find_package(catkin REQUIRED COMPONENTS
  5. roscpp
  6. OpenCV
  7. )
  8. include_directories(
  9. include
  10. ${catkin_INCLUDE_DIRS}
  11. ${OpenCV_INCLUDE_DIRS}
  12. )
  13. catkin_package(
  14. )
  15. add_executable( main src/main.cpp)
  16. target_link_libraries( main
  17. ${catkin_LIBRARIES}
  18. ${OpenCV_LIBRARIES}
  19. )

7. cd ..

8. catkin_make 

9. 更新/設定環境變量

   source devel/setup.bash

10.運作可執行程式

   rosrun test main

參考: https://blog.csdn.net/m0_38087936/article/details/84840830

繼續閱讀