ROS下使用CMakeList编译OpenCV
Compilation of OpenCV using CMakeList under ROS
我正在尝试使用 CmakeList.txt 编译 openCV 代码(在 ROS(机器人操作系统)),我的 CmakeList 正在运行,因为它在另一台 PC 上运行良好。我安装了 OpenCV 并在 openCV 示例目录中使用 g++ 和一些标志编译示例,编译成功。但是当我想使用 CmakeList 编译我的其他代码时,我得到这个 error:
CMakeFiles/aupark_node.dir/src/wrapper.cpp.o: In function `Wrapper::set_head_image(std::string)':
wrapper.cpp:(.text+0x2ef1): undefined reference to `cv::imread(cv::String const&, int)'
在 wrapper.cpp 我有所有合适的包含。
#include <opencv2/opencv.hpp>
#include <image_transport/image_transport.h>
#include <cv_bridge/cv_bridge.h>
#include <sensor_msgs/image_encodings.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
我的 CMakeList.txt 在这里:
cmake_minimum_required(VERSION 2.8.3)
project(aupark)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
find_package(catkin REQUIRED COMPONENTS cmake_modules roscpp gencpp moveit_ros_planning_interface moveit_msgs cv_bridge)
find_package(Eigen REQUIRED)
include_directories(${EIGEN_INCLUDE_DIRS})
add_definitions(${EIGEN_DEFINITIONS})
catkin_package()
add_executable(aupark_node src/aupark_node.cpp src/wrapper.cpp src/wrapper.h)
target_link_libraries(aupark_node ${catkin_LIBRARIES})
有什么问题吗?
pkg-config opencv --libs 的输出:
-L/usr/local/lib
-lopencv_shape
-lopencv_stitching
-lopencv_objdetect
-lopencv_superres
-lopencv_videostab
-lopencv_calib3d
-lopencv_features2d
-lopencv_highgui
-lopencv_videoio
-lopencv_imgcodecs
-lopencv_video
-lopencv_photo
-lopencv_ml
-lopencv_imgproc
-lopencv_flann
-lopencv_viz
-lopencv_core
-lopencv_hal
您没有 link 在 CMakeLists.txt
中反对 OpenCV。
为此,在顶部添加 find_package(OpenCV REQUIRED)
,然后 link 您的目标:
target_link_libraries(aupark_node ${catkin_LIBRARIES} ${OpenCV_LIBS})
中找到有关如何将 OpenCV 与 cmake 一起使用的最小示例
我正在尝试使用 CmakeList.txt 编译 openCV 代码(在 ROS(机器人操作系统)),我的 CmakeList 正在运行,因为它在另一台 PC 上运行良好。我安装了 OpenCV 并在 openCV 示例目录中使用 g++ 和一些标志编译示例,编译成功。但是当我想使用 CmakeList 编译我的其他代码时,我得到这个 error:
CMakeFiles/aupark_node.dir/src/wrapper.cpp.o: In function `Wrapper::set_head_image(std::string)':
wrapper.cpp:(.text+0x2ef1): undefined reference to `cv::imread(cv::String const&, int)'
在 wrapper.cpp 我有所有合适的包含。
#include <opencv2/opencv.hpp>
#include <image_transport/image_transport.h>
#include <cv_bridge/cv_bridge.h>
#include <sensor_msgs/image_encodings.h>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
我的 CMakeList.txt 在这里:
cmake_minimum_required(VERSION 2.8.3)
project(aupark)
set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}")
find_package(catkin REQUIRED COMPONENTS cmake_modules roscpp gencpp moveit_ros_planning_interface moveit_msgs cv_bridge)
find_package(Eigen REQUIRED)
include_directories(${EIGEN_INCLUDE_DIRS})
add_definitions(${EIGEN_DEFINITIONS})
catkin_package()
add_executable(aupark_node src/aupark_node.cpp src/wrapper.cpp src/wrapper.h)
target_link_libraries(aupark_node ${catkin_LIBRARIES})
有什么问题吗?
pkg-config opencv --libs 的输出:
-L/usr/local/lib
-lopencv_shape
-lopencv_stitching
-lopencv_objdetect
-lopencv_superres
-lopencv_videostab
-lopencv_calib3d
-lopencv_features2d
-lopencv_highgui
-lopencv_videoio
-lopencv_imgcodecs
-lopencv_video
-lopencv_photo
-lopencv_ml
-lopencv_imgproc
-lopencv_flann
-lopencv_viz
-lopencv_core
-lopencv_hal
您没有 link 在 CMakeLists.txt
中反对 OpenCV。
为此,在顶部添加 find_package(OpenCV REQUIRED)
,然后 link 您的目标:
target_link_libraries(aupark_node ${catkin_LIBRARIES} ${OpenCV_LIBS})
中找到有关如何将 OpenCV 与 cmake 一起使用的最小示例