多次測試後終于可以用哦。
軟體: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
- /*選用ROS自帶的OpenCV 3.3.1*/
- #include <iostream>
- #include <stdio.h>
- #include <opencv2/core.hpp>
- #include <opencv/highgui.h>
- #include <opencv2/opencv.hpp>
- using namespace cv;
- int main()
- /*
- argc為運作時輸入的參數數量,輸入一個參數時為2,
- argv為,argv[0]指向輸入的程式路徑及名稱:/home/pengpeng/1.jpg
- argv[1]指向第一個參數字元串,即圖檔
- */
- {
- Mat image;
- image = imread( "/home/zxkj/catkin_ws/src/test/src/test.jpg", );
- if (image.empty())
- {
- printf( "No image data \n");
- return ;
- }
- namedWindow( "Display Image", WINDOW_AUTOSIZE );
- imshow( "Display Image", image);
- waitKey( );
- return ;
- }
6.修改test程式包内的CMakeList.txt
- cmake_minimum_required(VERSION 2.8.3)
- project(test)
- set(OpenCV_DIR /opt/ros/kinetic/ share/OpenCV -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
參考: https://blog.csdn.net/m0_38087936/article/details/84840830